05 手把手部署Oracle 19c RAC——2节点实例安装全流程(图形化+静默) 一、RAC核心基础:共享存储与ASM磁盘组规划 1.1 网络规划(RAC专属,三网分离) 1.2 节点互信配置(RAC必需,免密登录) 1.3 ASM共享磁盘组规划与创建 1.3.1 磁盘组规划(生产环境标准) 1.3.2 共享磁盘配置(两节点同步操作) 1.3.3 ASM磁盘标记与磁盘组创建 二、图形化安装:新手友好,RAC配置可视化 2.1 前置:VNC配置与Grid软件解压 2.2 步骤1:安装Grid Infrastructure(集群核心) 2.3 步骤2:安装Oracle数据库软件(两节点同步) 2.4 步骤3:创建RAC数据库(DBCA图形化) 三、静默安装:生产首选,RAC自动化部署 3.1 核心响应文件准备(节点1,grid/oracle用户) 3.1.1 grid_install.rsp(关键参数) 3.1.2 dbca.rsp(RAC数据库配置) 3.2 静默安装全流程(节点1执行,同步到节点2) 3.2.1 安装Grid Infrastructure(grid用户) 3.2.2 安装Oracle数据库软件(oracle用户) 3.2.3 配置监听与创建数据库 3.3 生产环境静默安装完整脚本(含注释) 3.4 RAC安装常见错误及解决办法 四、RAC安装后验证:确保集群高可用 4.1 集群状态验证(grid用户,节点1) 4.2 ASM磁盘组验证(grid用户) 4.3 数据库实例与监听验证(oracle用户) 4.4 数据库连接测试(本地+远程) 4.5 故障转移测试(核心高可用验证) 五、RAC部署的核心要点
05 手把手部署Oracle 19c RAC——2节点实例安装全流程(图形化+静默)
“单实例数据库扛不住业务峰值了,想上RAC却被集群配置吓退”——这是很多运维同学的共性困扰。Oracle RAC(实时应用集群)凭借高可用、负载均衡的特性,成为生产环境的“刚需配置”,但2节点部署涉及共享存储、集群通信、节点同步等复杂环节,比单实例门槛高不少。
今天这篇指南,把19c RAC 2节点安装讲透:从ASM共享磁盘组规划、节点间互信配置,到图形化的点点操作、静默安装的脚本编写,每一步都标注“RAC专属要点”,连新手也能跟着完成部署。文末附上生产级脚本和常见故障解决办法,让你少踩90%的坑!
前置说明:RAC部署需2台配置一致的服务器(节点1:rac01,节点2:rac02),提前完成硬件检查(CPU≥8核、内存≥32GB、硬盘≥500GB)、操作系统配置(CentOS 7.9最佳)及网络规划(公网、私网、存储网三网分离)。
一、RAC核心基础:共享存储与ASM磁盘组规划
RAC与单实例的核心差异是“共享存储”——2个节点需访问同一套ASM磁盘组,因此磁盘规划和集群通信配置是部署的重中之重。这一步没做好,后续安装必然报错。
1.1 网络规划(RAC专属,三网分离)
RAC依赖三种网络实现不同功能,必须提前配置并确保通信正常,建议用bonding提升稳定性。以节点1(rac01)为例,网络配置如下:
| 网络类型 | 网卡配置 | IP地址 | 用途 | 节点2对应配置 |
|---|---|---|---|---|
| 公网(Public) | bond0(eth0+eth1) | 192.168.1.101 | 客户端访问、节点对外通信 | 192.168.1.102 |
| 私网(Private) | bond1(eth2+eth3) | 10.0.0.101 | 节点间心跳通信、缓存同步 | 10.0.0.102 |
| 存储网(Storage) | bond2(eth4+eth5) | 172.16.0.101 | 访问共享存储(ASM磁盘) | 172.16.0.102 |
| VIP(虚拟IP) | bond0:1 | 192.168.1.103 | 故障转移时自动漂移 | 192.168.1.104 |
| 配置完成后,在两个节点执行以下命令验证通信(均需通): |
# 公网通信验证 ping 192.168.1.102 -c 3 # 私网通信验证(延迟需<1ms) ping 10.0.0.102 -c 3 # 存储网通信验证 ping 172.16.0.102 -c 3
1.2 节点互信配置(RAC必需,免密登录)
RAC安装过程中,节点间需频繁传输文件,必须配置oracle用户和grid用户的互信。以oracle用户为例,操作步骤如下(节点1执行):
# 生成密钥对(一路回车) su - oracle ssh-keygen -t rsa # 将公钥复制到本地和节点2 ssh-copy-id rac01 ssh-copy-id rac02 # 验证互信(节点1登录节点2无需密码) ssh rac02 date # 节点2执行相同操作,确保双向互信
grid用户互信配置与oracle用户完全一致,需分别执行。
1.3 ASM共享磁盘组规划与创建
RAC的ASM磁盘组必须是共享存储(如FC SAN、iSCSI),两个节点都能识别到相同的磁盘。推荐创建4个磁盘组,满足集群和数据库需求:
1.3.1 磁盘组规划(生产环境标准)
| 磁盘组名称 | 容量 | 存储内容 | 冗余模式 | 磁盘标识 |
|---|---|---|---|---|
| OCRVOTING | 50GB | OCR(集群注册表)、投票盘 | Normal(至少2块盘,RAC必需) | ASM_OCR_01、ASM_OCR_02 |
| DATA | 200GB | 数据库数据文件、控制文件 | External(依赖存储RAID) | ASM_DATA_01、ASM_DATA_02 |
| RECO | 300GB | 归档日志、备份集 | External | ASM_RECO_01、ASM_RECO_02 |
| GRID | 100GB | Grid Infrastructure软件 | External | ASM_GRID_01、ASM_GRID_02 |
1.3.2 共享磁盘配置(两节点同步操作)
以iSCSI共享存储为例,先在存储服务器配置目标端,再在两个节点安装iSCSI客户端并发现磁盘:
# 两节点均执行:安装iSCSI客户端 yum install -y iscsi-initiator-utils # 配置initiator名称(与存储端一致) echo "InitiatorName=iqn.2025-05.com.oracle:rac01" > /etc/iscsi/initiatorname.iscsi systemctl restart iscsid # 发现并登录存储端 iscsiadm -m discovery -t st -p 172.16.0.200 # 存储服务器IP iscsiadm -m node -l # 查看共享磁盘(两节点应看到相同的/dev/sdb- /dev/sde) lsblk
1.3.3 ASM磁盘标记与磁盘组创建
在节点1执行以下操作,节点2会自动同步(需先安装grid软件依赖):
# 安装ASM依赖包(root用户,两节点均执行) yum install -y oracleasm-support oracleasmlib oracleasm- `uname -r` # 初始化ASM(仅节点1执行) oracleasm init oracleasm configure -i # 输入oracle用户、oinstall组 # 标记共享磁盘(节点1执行,节点2自动识别) oracleasm createdisk ASM_OCR_01 /dev/sdb1 oracleasm createdisk ASM_OCR_02 /dev/sdc1 oracleasm createdisk ASM_DATA_01 /dev/sdd1 oracleasm createdisk ASM_RECO_01 /dev/sde1 # 两节点验证磁盘(均显示AVAILABLE) oracleasm listdisks # 创建磁盘组(grid用户,节点1执行) su - grid asmca -silent -createDiskGroup -diskGroupName OCRVOTING -diskList /dev/oracleasm/disks/ASM_OCR_01,/dev/oracleasm/disks/ASM_OCR_02 -redundancy NORMAL asmca -silent -createDiskGroup -diskGroupName DATA -diskList /dev/oracleasm/disks/ASM_DATA_01 -redundancy EXTERNAL
二、图形化安装:新手友好,RAC配置可视化
RAC图形化安装需先装Grid Infrastructure(集群基础软件),再装Oracle数据库软件,最后创建RAC数据库。核心是通过VNC连接节点1,完成两节点配置同步。
2.1 前置:VNC配置与Grid软件解压
# 节点1安装VNC(root用户) yum install -y tigervnc-server su - grid vncserver # 设置密码,记录端口:1 # 本地用VNC Viewer连接rac01:1,进入图形界面 # 解压Grid和Oracle软件(节点1,grid用户) unzip /tmp/gridSetup.zip -d /u01/app/grid/19.3.0 unzip /tmp/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
2.2 步骤1:安装Grid Infrastructure(集群核心)
# grid用户执行,启动Grid安装向导 cd /u01/app/grid/19.3.0 ./gridSetup.sh
启动后按以下步骤操作,关键配置项重点标注:
-
选择安装类型 :“Configure Oracle Grid Infrastructure for a New Cluster”(新建集群)。
-
集群名称与节点配置 :
-
集群名称:rac-cluster(自定义,两节点统一);
-
SCAN名称:rac-scan(默认,对应SCAN IP:192.168.1.105);
-
添加节点:输入节点2名称rac02,点击“SSH Connectivity”,输入oracle/grid用户密码自动配置互信。
-
网络配置 :按规划选择网卡,对应公网、私网、存储网,系统自动识别IP。
-
存储配置(RAC核心) :选择“Use Oracle Automatic Storage Management”,点击“Create ASM Disk Group”,选择OCRVOTING磁盘组,输入ASM SYS密码(如Asm_123#)。
-
软件安装路径 :Grid基目录/u01/app/grid,软件目录/u01/app/grid/19.3.0。
-
先决条件检查 :忽略“Swap大小警告”(32GB内存可设16GB Swap),其他报错需修复(如依赖包缺失,执行yum安装)。
-
执行安装 :过程中按提示在两节点执行root脚本(/u01/app/grid/19.3.0/root.sh),执行完成后点击“OK”,等待安装完成。
2.3 步骤2:安装Oracle数据库软件(两节点同步)
# oracle用户执行,启动数据库安装向导 cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller
关键步骤:
安装类型 :“Install database software only”(仅装软件)。
集群节点配置 :自动识别rac01和rac02,确认两节点均在列表中。
数据库版本 :企业版(Enterprise Edition)。
安装路径 :与Grid路径区分,Oracle基目录/u01/app/oracle。
执行安装 :在两节点执行root脚本(/u01/app/oracle/product/19.3.0/dbhome_1/root.sh)。
2.4 步骤3:创建RAC数据库(DBCA图形化)
# oracle用户执行,启动DBCA dbca
核心配置项(RAC专属):
-
数据库类型 :“Create a database”,选择“Oracle Real Application Clusters Database”。
-
数据库标识 :
-
全局数据库名:racdb(两节点统一);
-
SID前缀:racdb(节点1实例racdb1,节点2自动为racdb2)。
-
存储配置 :选择“ASM”,数据文件路径+DATA,恢复区路径+RECO。
-
字符集与内存 :
-
字符集:AL32UTF8(支持所有语言);
-
内存分配:物理内存的50%(32GB内存分配16GB,两节点自动均分)。
-
节点配置 :确认rac01和rac02均为“Selected Nodes”,实例名自动生成。
点击“Finish”开始创建数据库,约30分钟后完成,两节点实例自动启动。
三、静默安装:生产首选,RAC自动化部署
生产环境RAC部署推荐静默方式,核心是编写Grid和Oracle的响应文件,实现“无人值守”安装。需先在节点1完成配置,通过脚本同步到节点2。
3.1 核心响应文件准备(节点1,grid/oracle用户)
RAC静默安装需4个核心响应文件:grid_install.rsp(Grid安装)、db_install.rsp(Oracle软件安装)、dbca.rsp(数据库创建)、netca.rsp(监听配置)。模板路径在软件解压后的response目录。
3.1.1 grid_install.rsp(关键参数)
# 复制模板并修改 cp /u01/app/grid/19.3.0/response/grid_install.rsp /tmp/rsp/ vi /tmp/rsp/grid_install.rsp # 核心参数 oracle.install .option =CRS_CONFIG ORACLE_BASE =/u01/app/grid ORACLE_HOME =/u01/app/grid/19.3.0 oracle.install.asm.asmDiskGroup .name =OCRVOTING oracle.install.asm.asmDiskGroup .redundancy =NORMAL oracle.install.asm.diskGroup .diskList =/dev/oracleasm/disks/ASM_OCR_01,/dev/oracleasm/disks/ASM_OCR_02 oracle.install.crs.config .clusterName =rac-cluster oracle.install.crs.config .clusterNodes =rac01:rac01-vip,rac02:rac02-vip oracle.install.crs.config .scanName =rac-scan oracle.install.crs.config .scanIPs = 192.168.1.105 oracle.install.crs.config .networkInterfaceList =eth0:192.168.1.0:public,eth2:10.0.0.0:private
3.1.2 dbca.rsp(RAC数据库配置)
cp /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp /tmp/rsp/ vi /tmp/rsp/dbca.rsp # 核心参数 operationType =createDatabase createDatabase .type =RAC gdbName =racdb sid =racdb sysPassword =Oracle123 # systemPassword =Oracle123 # storageType =ASM datafileDestination =+DATA recoveryAreaDestination =+RECO characterSet =AL32UTF8 totalMemory = 16384 # 16GB(两节点各8GB) nodes =rac01,rac02 # 集群节点
3.2 静默安装全流程(节点1执行,同步到节点2)
3.2.1 安装Grid Infrastructure(grid用户)
# 节点1执行,静默安装Grid su - grid cd /u01/app/grid/19.3.0 ./gridSetup.sh -silent -responseFile /tmp/rsp/grid_install.rsp -ignorePrereq # 安装过程监控日志 tail -f /u01/app/grid/oraInventory/logs/installActions*.log # 按提示在两节点执行root脚本(节点1先执行) su - root /u01/app/grid/19.3.0/root.sh ssh rac02 "/u01/app/grid/19.3.0/root.sh" # 验证Grid状态(两节点均为SUCCESS) crsctl check cluster -all
3.2.2 安装Oracle数据库软件(oracle用户)
# 节点1执行,静默安装Oracle软件 su - oracle cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller -silent -responseFile /tmp/rsp/db_install.rsp -ignorePrereq # 两节点执行root脚本 su - root /u01/app/oracle/product/19.3.0/dbhome_1/root.sh ssh rac02 "/u01/app/oracle/product/19.3.0/dbhome_1/root.sh"
3.2.3 配置监听与创建数据库
# 配置监听(两节点同步,oracle用户) netca -silent -responseFile /tmp/rsp/netca.rsp # 静默创建RAC数据库(节点1,oracle用户) dbca -silent -responseFile /tmp/rsp/dbca.rsp # 监控数据库创建日志 tail -f /u01/app/oracle/cfgtoollogs/dbca/racdb/racdb.log
3.3 生产环境静默安装完整脚本(含注释)
#!/bin/bash # Oracle 19c RAC 2节点静默安装脚本 # 适用环境:CentOS 7.9,两节点rac01/rac02,已完成网络和共享存储配置 # 全局变量(根据实际环境修改) GRID_BASE =/u01/app/grid GRID_HOME = $GRID_BASE/19.3.0 ORACLE_BASE =/u01/app/oracle ORACLE_HOME = $ORACLE_BASE/product/19.3.0/dbhome_1 RSP_DIR =/tmp/rsp GRID_FILE =/tmp/gridSetup.zip ORACLE_FILE =/tmp/LINUX.X64_193000_db_home.zip SYS_PWD =Oracle123 # ASM_PWD =Asm_123 # CLUSTER_NAME =rac-cluster NODES = "rac01 rac02" # 1. 节点1:创建目录并解压软件(root用户) mkdir -p $GRID_HOME $ORACLE_HOME $RSP_DIR chown -R grid:oinstall $GRID_BASE chown -R oracle:oinstall $ORACLE_BASE su - grid -c "unzip $GRID_FILE -d $GRID_HOME " su - oracle -c "unzip $ORACLE_FILE -d $ORACLE_HOME " # 2. 两节点:安装依赖包(root用户,节点1执行后同步到节点2) yum install -y binutils compat-libcap1 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc ++ libstdc ++ -devel libxcb make oracleasm-support oracleasmlib for node in $NODES; do if [ $node ! = "rac01" ]; then scp -r /etc/yum.repos.d/* $node:/etc/yum.repos.d/ ssh $node "yum install -y binutils compat-libcap1 glibc" fi done # 3. 节点1:配置ASM磁盘组(grid用户) su - grid -c "asmca -silent -createDiskGroup -diskGroupName OCRVOTING -diskList /dev/oracleasm/disks/ASM_OCR_01,/dev/oracleasm/disks/ASM_OCR_02 -redundancy NORMAL" su - grid -c "asmca -silent -createDiskGroup -diskGroupName DATA -diskList /dev/oracleasm/disks/ASM_DATA_01 -redundancy EXTERNAL" # 4. 节点1:准备响应文件(grid用户) su - grid -c "cp $GRID_HOME /response/grid_install.rsp $RSP_DIR /" su - grid -c "sed -i 's/oracle.install.option=.*/oracle.install.option=CRS_CONFIG/' $RSP_DIR /grid_install.rsp" su - grid -c "sed -i 's/ORACLE_BASE=.*/ORACLE_BASE= $GRID_BASE /' $RSP_DIR /grid_install.rsp" su - grid -c "sed -i 's/oracle.install.crs.config.clusterName=.*/oracle.install.crs.config.clusterName= $CLUSTER_NAME /' $RSP_DIR /grid_install.rsp" # 5. 节点1:安装Grid(grid用户) su - grid -c " $GRID_HOME /gridSetup.sh -silent -responseFile $RSP_DIR /grid_install.rsp -ignorePrereq" # 6. 两节点:执行Grid root脚本(root用户) for node in $NODES; do ssh $node " $GRID_HOME /root.sh" done # 7. 节点1:安装Oracle软件(oracle用户) su - oracle -c "cp $ORACLE_HOME /assistants/dbca/dbca.rsp $RSP_DIR /" su - oracle -c "sed -i 's/sysPassword=.*/sysPassword= $SYS_PWD /' $RSP_DIR /dbca.rsp" su - oracle -c " $ORACLE_HOME /runInstaller -silent -responseFile $RSP_DIR /db_install.rsp -ignorePrereq" # 8. 两节点:执行Oracle root脚本(root用户) for node in $NODES; do ssh $node " $ORACLE_HOME /root.sh" done # 9. 节点1:创建RAC数据库(oracle用户) su - oracle -c "dbca -silent -responseFile $RSP_DIR /dbca.rsp" # 10. 验证安装结果 echo "RAC安装完成,开始验证..." crsctl check cluster -all su - oracle -c "sqlplus -S / as sysdba <<EOF select instance_name, status from gv\$instance; exit; EOF " echo "验证完成,日志路径:/u01/app/oracle/cfgtoollogs/dbca/"
3.4 RAC安装常见错误及解决办法
| 错误现象 | 报错原因 | 解决办法 |
|---|---|---|
| Grid安装报错“节点间心跳超时” | 私网通信异常,延迟过高或丢包 | 1. 检查私网网卡配置:ifconfig;2. 测试私网延迟:ping 10.0.0.102 -i 0.1 -c 100(丢包率0%);3. 重启私网网卡:systemctl restart network |
| ASM磁盘组创建失败“磁盘不可共享” | 共享存储未配置,两节点磁盘识别不一致 | 1. 两节点执行lsblk对比磁盘;2. 重新配置iSCSI:iscsiadm -m node -l;3. 确保磁盘权限:chown grid:asmadmin /dev/sdb1 |
| 数据库创建报错“实例racdb2启动失败” | 节点2环境变量未配置,或监听未启动 | 1. 节点2配置环境变量:export ORACLE_SID=racdb2;2. 启动监听:lsnrctl start;3. 手动启动实例:sqlplus / as sysdba → startup |
| CRS状态异常“ora.asm offline” | ASM实例未启动,或磁盘组未挂载 | 1. 启动ASM实例:su - grid → sqlplus / as sysasm → startup;2. 挂载磁盘组:alter diskgroup OCRVOTING mount; |
四、RAC安装后验证:确保集群高可用
RAC验证不仅要确认数据库正常,更要验证集群的高可用特性(如实例故障转移),需完成以下5步全面验证:
4.1 集群状态验证(grid用户,节点1)
# 查看集群整体状态(所有资源为ONLINE) crsctl check cluster -all # 查看集群资源详情 crsctl status resource -t # 正常输出应包含: # ora.racdb.db(数据库资源,两节点ONLINE) # ora.ocrvoting.dg(磁盘组资源,ONLINE) # ora.rac01.vip(VIP资源,ONLINE)
4.2 ASM磁盘组验证(grid用户)
# 两节点查看磁盘组状态(均为MOUNTED) su - grid asmcmd lsdg # 查看ASM实例状态(两节点均为OPEN) sqlplus / as sysasm select instance_name, status from gv $instance;
4.3 数据库实例与监听验证(oracle用户)
# 节点1查看实例(racdb1) export ORACLE_SID =racdb1 sqlplus / as sysdba select instance_name, status from v $instance; # 节点2查看实例(racdb2) ssh rac02 "export ORACLE_SID=racdb2; sqlplus -S / as sysdba <<EOF select instance_name, status from v\$instance; exit; EOF " # 查看监听状态(两节点均包含racdb1和racdb2服务) lsnrctl status
4.4 数据库连接测试(本地+远程)
# 本地连接节点1实例 sqlplus sys/ $SYS_PWD@rac01:1521/racdb1 as sysdba # 远程连接SCAN IP(自动负载均衡) sqlplus sys/ $SYS_PWD@rac-scan:1521/racdb as sysdba # 验证RAC特性:跨节点查询数据 create table test_rac (id number); insert into test_rac values (1); commit; ssh rac02 "sqlplus -S sys/ $SYS_PWD @racdb2 as sysdba <<EOF select * from test_rac; exit; EOF " # 应查询到数据,说明共享存储正常
4.5 故障转移测试(核心高可用验证)
# 节点1手动停止实例,模拟故障 export ORACLE_SID =racdb1 sqlplus / as sysdba shutdown abort; exit; # 节点2查看集群状态(racdb1实例OFFLINE,VIP自动漂移) crsctl status resource -t # 远程连接测试(自动连接到racdb2实例) sqlplus sys/ $SYS_PWD@rac-scan:1521/racdb as sysdba select instance_name from v $instance; # 显示racdb2 # 启动节点1实例,恢复集群 ssh rac01 "export ORACLE_SID=racdb1; sqlplus / as sysdba <<EOF startup; exit; EOF "
五、RAC部署的核心要点
19c RAC 2节点部署虽复杂,但抓住核心逻辑就能事半功倍:
-
基础配置是前提 :三网分离、节点互信、共享存储这三点必须提前搞定,否则后续安装寸步难行;
-
Grid优先于Oracle :先装集群基础软件,再装数据库软件,顺序不能乱;
-
高可用验证必做 :安装完成后一定要测故障转移,确保RAC真正发挥作用;
-
日志是排错关键 :遇到报错先查Grid和Oracle的安装日志,定位问题比盲目重试更高效。
掌握了RAC部署,你就具备了生产环境高可用数据库的运维能力。接下来,我们将进入日常运维阶段,讲解数据库的启停、表空间管理等核心操作,关注我,带你一步步成为Oracle运维高手!
原文链接: https://mp.weixin.qq.com/s/E4e8FsCqrISqrN7bxjt2aQ
???? 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
