ITPub博客

首页 > 数据库 > Oracle > 05 手把手部署Oracle 19c RAC——2节点实例安装全流程(图形化+静默)

05 手把手部署Oracle 19c RAC——2节点实例安装全流程(图形化+静默)

原创 Oracle 作者:shuchaoyang 时间:2026-02-15 10:00:05 0 删除 编辑

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

启动后按以下步骤操作,关键配置项重点标注:

  1. 选择安装类型 :“Configure Oracle Grid Infrastructure for a New Cluster”(新建集群)。

  2. 集群名称与节点配置 :  

    • 集群名称:rac-cluster(自定义,两节点统一);

    • SCAN名称:rac-scan(默认,对应SCAN IP:192.168.1.105);

    • 添加节点:输入节点2名称rac02,点击“SSH Connectivity”,输入oracle/grid用户密码自动配置互信。

  3. 网络配置 :按规划选择网卡,对应公网、私网、存储网,系统自动识别IP。

  4. 存储配置(RAC核心) :选择“Use Oracle Automatic Storage Management”,点击“Create ASM Disk Group”,选择OCRVOTING磁盘组,输入ASM SYS密码(如Asm_123#)。

  5. 软件安装路径 :Grid基目录/u01/app/grid,软件目录/u01/app/grid/19.3.0。

  6. 先决条件检查 :忽略“Swap大小警告”(32GB内存可设16GB Swap),其他报错需修复(如依赖包缺失,执行yum安装)。

  7. 执行安装 :过程中按提示在两节点执行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专属):

  1. 数据库类型 :“Create a database”,选择“Oracle Real Application Clusters Database”。

  2. 数据库标识 :

    • 全局数据库名:racdb(两节点统一);

    • SID前缀:racdb(节点1实例racdb1,节点2自动为racdb2)。

  3. 存储配置 :选择“ASM”,数据文件路径+DATA,恢复区路径+RECO。

  4. 字符集与内存 :  

    • 字符集:AL32UTF8(支持所有语言);

    • 内存分配:物理内存的50%(32GB内存分配16GB,两节点自动均分)。

  5. 节点配置 :确认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节点部署虽复杂,但抓住核心逻辑就能事半功倍:

  1. 基础配置是前提 :三网分离、节点互信、共享存储这三点必须提前搞定,否则后续安装寸步难行;

  2. Grid优先于Oracle :先装集群基础软件,再装数据库软件,顺序不能乱;

  3. 高可用验证必做 :安装完成后一定要测故障转移,确保RAC真正发挥作用;

  4. 日志是排错关键 :遇到报错先查Grid和Oracle的安装日志,定位问题比盲目重试更高效。

掌握了RAC部署,你就具备了生产环境高可用数据库的运维能力。接下来,我们将进入日常运维阶段,讲解数据库的启停、表空间管理等核心操作,关注我,带你一步步成为Oracle运维高手!

原文链接: https://mp.weixin.qq.com/s/E4e8FsCqrISqrN7bxjt2aQ

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3110776/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303454