1. 什么是Oracle RAC?
Oracle RAC (Real Application Clusters) 是 Oracle 数据库的一种高可用性及高可伸缩性的解决方案。RAC 可以使多台服务器共同访问同一组 Oracle 数据库文件(文件系统或 ASM),共享存储,并且可以通过网络连接共享多个节点共同访问同一组数据库块。这意味着,在使用RAC解决方案的情况下,如果其中一个节点出现硬件故障,服务可以继续运行,而不会影响用户数据的可用性。
1.1 RAC的主要功能
Oracle RAC 提供以下主要功能:
多节点共享
数据高可用性
线性可扩展性
透明的负载均衡
1.2 RAC的体系结构
Oracle RAC 采用共享存储,所有节点访问共享存储上的数据库文件,访问数据通过 Oracle Clusterware 控制的虚拟 IP 地址进行访问。每个节点都有自己的 Oracle 实例,每个节点上的实例都可以同时访问共享存储。Oracle Clusterware 提供集群管理服务,用于管理集群环境,并在失败发生时重新启动集群。
2. RAC的优缺点
2.1 优点
数据可用性更高:系统能够在节点出现故障时继续提供服务,完全透明。
线性可扩展:可以通过添加节点来提高集群的处理能力。
负载均衡:通过 Oracle 自带的连接池功能来实现负载均衡。
2.2 缺点
维护成本较高:需要更多的硬件和软件成本,并且需要更多的管理员来维护。
性能问题:由于一些锁定和共享资源争用,可能出现性能问题。
3. 如何配置Oracle RAC?
3.1 环境准备
在开始配置 Oracle RAC 之前,需要先准备好以下硬件和软件环境:
至少两个 Oracle 节点
共享存储设备(文件系统或 ASM)
Oracle Clusterware 软件
Oracle Grid Infrastructure 软件
Oracle Database 软件
3.2 RAC 安装步骤
以 CentOS 7 为例,以下是 RAC 安装的基本步骤:
3.2.1 安装Oracle Clusterware
# 解压 Oracle Clusterware 文件
unzip linux.x64_11gR2_clusterware.zip
# 进入解压后的目录
cd clusterware/
# 运行安装程序,指定安装类型为“Enterprise Edition”
./runInstaller -silent -ignoreSysPrereqs -responseFile /vagrant/response/clusterware_install.rsp \
oracle.install.option=CRS \
ORACLE_HOSTNAME=racnode1 \
INVENTORY_LOCATION=/u01/app/oraInventory \
SELECTED_LANGUAGES=en,zh_CN \
oracle.install.asm.OSDBA=asmdba \
oracle.install.asm.OSASM=asmadmin \
oracle.install.crs.config.scanType=LOCAL_SCAN \
oracle.install.crs.config.gpnp.scanName=rac-scan \
oracle.install.crs.config.gpnp.scanPort=1521 \
oracle.install.crs.config.autoConfigureClusterNodeVIP=ture \
oracle.install.asm.storageOption=ASM \
oracle.install.asm.diskGroup.name=DATA \
oracle.install.asm.diskGroup.redundancy=EXTERNAL \
oracle.install.asm.diskGroup.disks=/dev/sdb,/dev/sdc \
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/* \
oracle.install.asm.monitorPassword=oracle \
oracle.install.crs.rootconfig.executeRootScripts=true \
oracle.install.crs.config.useIPMI=false \
oracle.install.crs.config.ignoreDownNodes=false \
oracle.install.crs.config.autoRestart=false \
oracle.install.config.managementOption=NONE
# 继续安装过程中会弹出一些配置向导,根据向导填写信息即可。安装过程中可能需要root用户密码等信息。
3.2.2 安装 Oracle Grid Infrastructure
# 进入 Oracle Grid Infrastructure 软件目录
cd /u01/oracle/app/grid/product/11.2.0/grid
# 运行安装程序,指定安装类型为“Enterprise Edition”
./runInstaller -silent -ignoreSysPrereqs -responseFile /u01/oracle/response/grid_install.rsp -waitForCompletion \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=racnode1 \
INVENTORY_LOCATION=/u01/app/oraInventory \
SELECTED_LANGUAGES=en,zh_CN \
oracle.install.asm.OSDBA=asmdba \
oracle.install.asm.OSASM=asmadmin \
oracle.install.asm.storageOption=ASM \
oracle.install.asm.diskGroup.name=DATA \
oracle.install.asm.diskGroup.redundancy=EXTERNAL \
oracle.install.asm.diskGroup.disks=/dev/sdb,/dev/sdc \
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/* \
oracle.install.asm.monitorPassword=oracle \
oracle.install.config.managementOption=NONE \
oracle.install.crs.rootconfig.executeRootScripts=true \
oracle.install.config.managementOption=NONE
3.2.3 安装 Oracle Database
# 解压 Oracle Database 软件
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
# 进入解压后的目录
cd database/
# 运行安装程序,指定安装类型为“Enterprise Edition”
./runInstaller -silent -ignoreSysPrereqs -responseFile /u01/oracle/response/db_install.rsp -waitForCompletion \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u01/app/oraInventory \
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 \
s_install.db.InstallEdition=EE \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=dba \
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE \
oracle.install.db.config.starterdb.globalDBName=DB11G \
oracle.install.db.config.starterdb.SID=DB11G \
oracle.install.db.config.starterdb.characterSet=AL32UTF8 \
oracle.install.db.config.starterdb.InitParams.file="/u01/oracle/response/initDB11.sql"
完成以上步骤后,RAC 配置完成。
4. 总结
Oracle RAC 是 Oracle 数据库的高可用性和高可伸缩性解决方案,其体系结构采用共享存储和多节点共享的方式。RAC 的部署安装相对复杂,需要仔细设置和配置各项参数和环境,但一旦成功部署,可以提供更高的数据可用性和更强的性能扩展能力。