Ubuntu环境下搭建Oracle Real Application Clusters (RAC)集群的步骤
确保所有集群节点(至少2台)安装Ubuntu 16.04 LTS及以上版本(推荐Ubuntu 20.04 LTS或22.04 LTS),并完成最小化安装(避免不必要的软件包冲突)。
node1、node2),并通过/etc/hosts文件实现主机名解析(避免依赖DNS);ping命令验证所有节点之间的网络畅通性。在所有节点上安装Oracle要求的依赖包(以Ubuntu 20.04为例):
sudo apt update
sudo apt install -y automake autotools-dev binutils bzip2 elfutils expat gawk gcc gcc-multilib g++-multilib libaio1 libaio-dev libelf-dev libssl-dev unixodbc unixodbc-dev ksh sysstat libtool-ltdl-dev
Oracle Grid Infrastructure(GI)是Oracle RAC的核心组件,负责管理集群节点、资源(如数据库实例、监听器)和高可用性。
在主节点(如node1)创建Oracle软件安装目录和临时目录:
sudo mkdir -p /u01/app/oracle/product/19.0.0/grid
sudo mkdir -p /u01/app/oracle/diag/asm
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
从Oracle官网下载Oracle Grid Infrastructure for a Cluster安装包(.zip格式),上传至主节点的/soft目录,解压后进入安装目录:
unzip linuxx64_193000_grid_home.zip -d /soft
cd /soft/grid
复制响应文件模板并修改关键参数(如oracle_install_user、inventory_location、cluster_nodes):
cp -r /soft/grid/response /soft/grid/response_grid
vi /soft/grid/response/response_grid
修改示例:
oracle_install_user="oracle"
inventory_location="/u01/app/oraInventory"
cluster_nodes="node1,node2"
oracle_base="/u01/app/oracle"
oracle_home="/u01/app/oracle/product/19.0.0/grid"
使用oracle用户执行安装命令:
su - oracle
./runInstaller -silent -responseFile /soft/grid/response/response_grid
安装完成后,运行根脚本(在每个节点上执行):
sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/grid/root.sh
编辑oracle用户的~/.bashrc文件,添加以下内容(替换为实际路径):
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
使环境变量生效:
source ~/.bashrc
复制响应文件模板并修改参数(如cluster_database、database_name、instance_name):
cp -r /soft/database/response /soft/database/response_db
vi /soft/database/response/response_db
修改示例:
oracle_install_user="oracle"
inventory_location="/u01/app/oraInventory"
cluster_database="TRUE"
database_name="orcl"
instance_name="orcl1"
oracle_base="/u01/app/oracle"
oracle_home="/u01/app/oracle/product/19.0.0/dbhome_1"
执行安装命令:
./runInstaller -silent -responseFile /soft/database/response/response_db
安装完成后,运行根脚本:
sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
通过oracle用户执行DBCA(Database Configuration Assistant)命令:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName orcl -sid orcl1 -createAsContainerDatabase false -datafileDestination /u01/app/oracle/oradata -storageType ASM -asmSysPassword YourPassword -sysPassword YourPassword -systemPassword YourPassword -emConfiguration NONE
使用netca命令配置监听器(支持RAC的监听器):
netca -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/assistants/netca/netca.rsp
修改listener.ora文件(位于$ORACLE_HOME/network/admin),添加LOCAL_LISTENER和REMOTE_LISTENER参数:
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = orcl1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = orcl2)
    )
  )
LOCAL_LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
REMOTE_LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
使用crsctl命令启动Oracle Clusterware(集群软件):
crsctl start crs
查看集群状态:
crsctl status crs
node1上的数据库实例,检查node2是否自动接管;ocrconfig -manualbackup)和数据库(使用RMAN);