Oracle RAC 19c 部署详解

Oracle RAC 19c 部署详解

适用版本:Oracle Database 19c 文档版本:v1.0 / 2026-07


1. 概述

Oracle RAC 提供高可用与扩展性[1]:

组件

  • Grid Infrastructure
  • Oracle RAC 软件
  • 共享存储
  • 集群网络

详细见:Oracle RAC 部署实战Oracle GI 19c 安装详解


2. 架构

┌─────────────────────────────────────────┐
│  Client                                 │
└─────────────┬───────────────────────────┘
              │ SCAN
┌─────────────▼───────────────────────────┐
│  SCAN Listener (3)                      │
└─────────────┬───────────────────────────┘

       ┌──────┴──────┐
       │             │
┌──────▼─────┐ ┌─────▼──────┐
│  Node 1    │ │  Node 2    │
│  Instance1 │ │  Instance2 │
│  RDBMS     │ │  RDBMS     │
└──────┬─────┘ └─────┬──────┘
       │             │
       └──────┬──────┘

   ┌──────────▼──────────┐
   │  Shared Storage     │
   │  (ASM)              │
   │  - DATA             │
   │  - FRA              │
   │  - OCR/Voting       │
   └─────────────────────┘

3. 网络规划

3.1 IP 规划

用途rac1rac2
Public IP192.168.1.10192.168.1.11
Private IP10.0.0.1010.0.0.11
Virtual IP192.168.1.12192.168.1.13
SCAN192.168.1.20-22-

3.2 /etc/hosts

127.0.0.1 localhost
192.168.1.10 rac1.example.com rac1
192.168.1.11 rac2.example.com rac2
192.168.1.12 rac1-vip.example.com rac1-vip
192.168.1.13 rac2-vip.example.com rac2-vip
10.0.0.10 rac1-priv.example.com rac1-priv
10.0.0.11 rac2-priv.example.com rac2-priv
192.168.1.20 rac-scan.example.com rac-scan
192.168.1.21 rac-scan.example.com rac-scan
192.168.1.22 rac-scan.example.com rac-scan

3.3 SCAN DNS

- 推荐 DNS
- 单 /etc/hosts 仅 1 IP

4. 存储

4.1 LUN

LUN大小用途
OCR11GBOCR/Voting
OCR21GBOCR/Voting
OCR31GBOCR/Voting
DATA100GB数据
FRA50GB归档/备份

4.2 ASMLib

oracleasm createdisk OCR1 /dev/sdb1
oracleasm createdisk OCR2 /dev/sdc1
oracleasm createdisk OCR3 /dev/sdd1
oracleasm createdisk DATA /dev/sde1
oracleasm createdisk FRA /dev/sdf1

# 节点 2 扫描
oracleasm scandisks
oracleasm listdisks

详细见:Oracle ASM 详解


5. 预安装

5.1 OS

dnf install -y oracle-database-preinstall-19c

5.2 用户

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54328 asmadmin
groupadd -g 54329 asmdba
groupadd -g 54330 asmoper

useradd -u 54331 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -u 54321 -g oinstall -G dba,asmdba oracle

passwd oracle
passwd grid

5.3 内核

# /etc/sysctl.d/99-oracle.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 --system

详细见:Oracle-Linux8 配置详解


6. SSH 互信

6.1 grid

su - grid
ssh-keygen -t rsa -b 4096
ssh-copy-id rac1
ssh-copy-id rac2

# 验证
ssh rac1 date
ssh rac2 date

6.2 oracle

su - oracle
ssh-keygen -t rsa -b 4096
ssh-copy-id rac1
ssh-copy-id rac2

7. GI 安装

7.1 解压

su - grid
mkdir -p ******
cd /u01/app/19.0.0/grid
unzip /tmp/LINUX.X64_193000_grid_home.zip

7.2 CVU 预检

./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose

7.3 响应文件

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/19.0.0/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.gpnp.scanName=rac-scan.example.com
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.clusterName=rac-cluster
oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip
oracle.install.crs.config.networkInterfaceList=ens33:192.168.1.0:1,ens34:10.0.0.0:2
oracle.install.asm.SYSASMPassword=******
oracle.install.asm.diskGroup.name=OCR
oracle.install.asm.diskGroup.redundancy=NORMAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/OCR1,/dev/oracleasm/disks/OCR2,/dev/oracleasm/disks/OCR3
oracle.install.asm.monitorPassword=******

7.4 静默安装

./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp -applyRU /tmp/ru

7.5 root 脚本

# 节点 1
su -
/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 GI 19c 安装详解

7.6 验证

crsctl stat res -t
crsctl check cluster -all

8. ASM Disk Group

8.1 创建

asmca -silent -createDiskGroup -diskGroupName DATA -diskList /dev/oracleasm/disks/DATA -redundancy EXTERNAL
asmca -silent -createDiskGroup -diskGroupName FRA -diskList /dev/oracleasm/disks/FRA -redundancy EXTERNAL

8.2 验证

asmcmd lsdg

9. RAC DB 软件安装

9.1 解压

su - oracle
mkdir -p ******
cd /u01/app/oracle/product/19.0.0/dbhome_1
unzip /tmp/LINUX.X64_193000_db_home.zip

9.2 响应文件

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.CLUSTER_NODES=rac1,rac2
oracle.install.db.isRACOneInstall=false
oracle.install.db.rac.serverpoolCardinality=0
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=

9.3 安装

./runInstaller -silent -responseFile /tmp/db_install.rsp -applyRU /tmp/ru

9.4 root

# 两节点
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

10. DBCA 建库

10.1 静默

dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbName orcl \
  -sid orcl \
  -databaseConfigType RAC \
  -nodelist rac1,rac2 \
  -createAsContainerDatabase true \
  -numberOfPDBs 1 \
  -pdbName orclpdb \
  -pdbAdminPassword Oracle123 \
  -sysPassword Oracle123 \
  -systemPassword Oracle123 \
  -storageType ASM \
  -diskGroupName +DATA \
  -recoveryGroupName +FRA \
  -characterSet AL32UTF8 \
  -totalMemory 4096 \
  -databaseType OLTP

10.2 验证

srvctl status database -db orcl
srvctl config database -db orcl

11. 管理

11.1 集群

crsctl stat res -t
crsctl check cluster -all
crsctl start cluster -all
crsctl stop cluster -all

11.2 数据库

srvctl status database -db orcl
srvctl start database -db orcl
srvctl stop database -db orcl
srvctl status instance -db orcl -n rac1

11.3 实例

sqlplus / as sysdba
SQL> SELECT instance_name, host_name, status FROM v$instance;
SQL> SELECT inst_id, name, open_mode FROM gv$database;

12. SCAN 配置

12.1 SCAN Listener

srvctl status scan_listener
srvctl config scan

12.2 客户端

# tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

13. 服务

13.1 创建

srvctl add service -db orcl -service oltp -preferred orcl1 -available orcl2
srvctl start service -db orcl -service oltp

13.2 TAF

EXEC DBMS_SERVICE.MODIFY_SERVICE(
  service_name => 'oltp',
  failover_method => 'BASIC',
  failover_type => 'SELECT',
  failover_retries => 180,
  failover_delay => 5
);

14. 补丁

14.1 滚动

# 节点 1
srvctl stop instance -db orcl -n rac1
$ORACLE_HOME/OPatch/opatch apply /tmp/ru
srvctl start instance -db orcl -n rac1

# 节点 2
srvctl stop instance -db orcl -n rac2
$ORACLE_HOME/OPatch/opatch apply /tmp/ru
srvctl start instance -db orcl -n rac2

详细见:Oracle Patch RU 详细操作

14.2 datapatch

cd $ORACLE_HOME/OPatch
./datapatch -verbose

15. 验证

15.1 集群

crsctl stat res -t
crsctl check cluster -all

15.2 ASM

asmcmd lsdg
asmcmd lsdsk

15.3 数据库

SELECT instance_name, status FROM gv$instance;
SELECT name, open_mode FROM v$database;

15.4 OCR/Voting

ocrcheck
crsctl query css votedisk

16. 常见坑与排错

16.1 节点加入失败

- SSH 互信
- 时间同步
- 网络互通

16.2 ASM Disk 不可见

oracleasm scandisks
oracleasm listdisks

16.3 SCAN 无法连接

- DNS
- SCAN Listener
- 防火墙

16.4 Voting 丢失

crsctl replace votedisk +NEW_DG

17. 最佳实践

  1. DNS SCAN:客户端
  2. 私有网络独占:性能
  3. Normal OCR:3 票
  4. ASM 存储:现代
  5. SSH 互信:必要
  6. CVU 预检:完整
  7. 静默安装:自动化
  8. RU 最新:稳定
  9. 滚动补丁:零停
  10. 服务 TAF:高可用

18. 参考资料

[1] Oracle Grid Infrastructure Installation Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/