Oracle RAC 部署实战
Oracle RAC 部署实战
适用版本:Oracle Database 19c 文档版本:v1.0 / 2026-07
1. 概述
RAC(Real Application Clusters)多实例共享存储[1]:
架构:
- 多节点
- 共享存储(ASM)
- Clusterware
- Cache Fusion
详细见:Oracle Grid Infrastructure 安装。
2. 部署规划
2.1 节点规划
| 节点 | 公网 IP | 私网 IP | VIP |
|---|---|---|---|
| rac1 | 192.168.1.101 | 192.168.10.101 | 192.168.1.111 |
| rac2 | 192.168.1.102 | 192.168.10.102 | 192.168.1.112 |
| SCAN | 192.168.1.120-122 | - | - |
2.2 存储
+DATA - 数据
+FRA - 归档/备份
+OCR - OCR/Voting
2.3 软件
- Oracle Linux 8
- Grid Infrastructure 19c
- Oracle Database 19c
3. 系统准备
3.1 系统配置
# 所有节点
dnf install -y oracle-database-preinstall-19c
详细见:Oracle Linux 安装与配置。
3.2 网络
# /etc/hosts
192.168.1.101 rac1.example.com rac1
192.168.1.102 rac2.example.com rac2
192.168.10.101 rac1-priv.example.com rac1-priv
192.168.10.102 rac2-priv.example.com rac2-priv
192.168.1.111 rac1-vip.example.com rac1-vip
192.168.1.112 rac2-vip.example.com rac2-vip
192.168.1.120 rac-scan.example.com rac-scan
3.3 用户
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54324 asmadmin
groupadd -g 54325 asmdba
groupadd -g 54326 asmoper
useradd -u 54321 -g oinstall -G dba,asmdba,oper oracle
useradd -u 54331 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
passwd oracle
passwd grid
3.4 SSH 互信
# oracle 用户
su - oracle
ssh-keygen -t rsa
ssh-copy-id rac1
ssh-copy-id rac2
# grid 用户
su - grid
ssh-keygen -t rsa
ssh-copy-id rac1
ssh-copy-id rac2
# 测试
ssh rac2 date
3.5 内核参数
# /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 16777216
kernel.shmmax = 68719476736
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
sysctl -p
******
### 3.6 limits
```bash
# /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
4. 共享存储
4.1 ASM 磁盘
# 在 SAN/NAS 上分配
# 节点都能访问
lsblk
fdisk -l
4.2 ASMFD
# 所有节点
su - grid
asmcmd afd_label DATA1 /dev/sdb1
asmcmd afd_label DATA2 /dev/sdc1
asmcmd afd_label FRA1 /dev/sdd1
asmcmd afd_label OCR1 /dev/sde1
asmcmd afd_label OCR2 /dev/sdf1
asmcmd afd_label OCR3 /dev/sdg1
4.3 UDEV(替代)
# /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc1", OWNER="grid", GROUP="asmadmin", MODE="0660"
...
udevadm control --reload-rules
udevadm trigger
详细见:Oracle ASM 详解。
5. Grid Infrastructure 安装
5.1 解压
su - grid
cd $ORACLE_HOME
unzip /tmp/LINUX.X64_193000_grid_home.zip
5.2 CVU 检查
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
5.3 静默安装
./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp
5.4 root 脚本
# 节点 1
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0/grid/root.sh
# 节点 2
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0/grid/root.sh
详细见:Oracle Grid Infrastructure 安装。
5.5 验证
crsctl stat res -t
crsctl check cluster -all
olsnodes -n
6. Oracle RAC 软件安装
6.1 解压
su - oracle
cd $ORACLE_HOME
unzip /tmp/LINUX.X64_193000_db_home.zip
6.2 静默安装
./runInstaller -silent -responseFile /tmp/db_install.rsp
6.3 root 脚本
# 所有节点
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh
7. 创建 ASM 磁盘组
7.1 +DATA
su - grid
sqlplus / as sysasm
SQL> CREATE DISKGROUP DATA
NORMAL REDUNDANCY
DISK '/dev/asm-disk1', '/dev/asm-disk2'
AU SIZE 4M;
7.2 +FRA
SQL> CREATE DISKGROUP FRA
NORMAL REDUNDANCY
DISK '/dev/asm-disk3', '/dev/asm-disk4';
8. 创建 RAC 数据库
8.1 DBCA 静默
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbName orcl \
-sid orcl \
-databaseConfigType RAC \
-nodelist rac1,rac2 \
-sysPassword Oracle123 \
-systemPassword Oracle123 \
-storageType ASM \
-diskGroupName +DATA \
-recoveryGroupName +FRA \
-characterSet AL32UTF8 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName orclpdb \
-pdbAdminPassword Oracle123 \
-totalMemory 4096
详细见:Oracle 数据库创建 DBCA。
8.2 验证
srvctl config database -db orcl
srvctl status database -db orcl
crsctl stat res -t | grep orcl
9. 服务配置
9.1 创建服务
srvctl add service -db orcl -service oltp_svc \
-preferred orcl_1 -available orcl_2
srvctl start service -db orcl -service oltp_svc
9.2 TAF
srvctl add service -db orcl -service oltp_svc \
-preferred orcl_1,orcl_2 \
-tafpolicy BASIC
10. 监控
10.1 集群状态
crsctl stat res -t
crsctl check cluster -all
olsnodes -n -s -t
10.2 ASM
asmcmd lsdg
sqlplus / as sysasm
SQL> SELECT group_number, name, state FROM v$asm_diskgroup;
10.3 数据库
SELECT inst_id, name, open_mode FROM gv$database;
SELECT inst_id, instance_name, status FROM gv$instance;
详细见:Oracle RAC 性能调优。
11. 管理
11.1 启停
# 集群
crsctl stop cluster -all
crsctl start cluster -all
# 数据库
srvctl stop database -db orcl
srvctl start database -db orcl
# 实例
srvctl stop instance -db orcl -instance orcl1
srvctl start instance -db orcl -instance orcl1
11.2 节点加入
# 新节点
./gridSetup.sh -silent -responseFile /tmp/grid_addnode.rsp -waitForCompletion
./runInstaller -silent -responseFile /tmp/db_addnode.rsp
12. 常见坑与排错
12.1 安装失败
# 1. CVU 检查
./runcluvfy.sh stage -pre crsinst -n rac1,rac2
# 2. 日志
$ORACLE_BASE/cfgtoollogs/
# 3. 网络/SSH
12.2 ASM 不可见
# 1. 磁盘权限
ls -l /dev/asm*
# 2. ASMFD
asmcmd afd_lsdsk
# 3. 磁盘头
dd if=/dev/sdb1 bs=512 count=1 | od -c
12.3 节点驱逐
# 1. 检查心跳
# 2. 网络延迟
ping rac1-priv
# 3. CSSD 日志
$ORACLE_BASE/diag/crs/rac1/crsd/trace/
13. 最佳实践
- CVU 验证:安装前
- SSH 互信:节点
- 专用网络:性能
- 多路径:存储
- ASMFD:管理
- HugePages:内存
- 服务分离:Cache Fusion
- TAF:高可用
- 监控:及时
- 文档化:流程
14. 参考资料
[1] Oracle Real Application Clusters Installation Guide 19c for Linux https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/