1. 本地环境Oracle RAC集群部署概述
在数据库高可用性领域,Oracle RAC(Real Application Clusters)技术一直是企业级解决方案的标杆。与单实例Oracle相比,RAC架构通过多节点共享存储的方式,实现了负载均衡和故障无缝切换。最近在本地测试环境中成功部署了一套双节点Oracle 19c RAC集群,完整走通了从环境准备到集群验证的全流程。
特别提示:Oracle RAC对硬件资源要求较高,本地测试环境建议每个节点至少配置4核CPU、8GB内存和50GB存储空间,否则安装过程可能异常缓慢甚至失败。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与前期配置
2.1 硬件与网络规划
在本地VMware环境中创建了两台CentOS 7.9虚拟机作为集群节点,关键配置如下:
| 组件 | 节点1 (rac1) | 节点2 (rac2) |
|---|---|---|
| 主机名 | rac1.localdomain | rac2.localdomain |
| 内存 | 8GB | 8GB |
| CPU | 4核心 | 4核心 |
| 系统磁盘 | 50GB | 50GB |
| 共享存储 | 通过iSCSI挂载20GB | 通过iSCSI挂载20GB |
网络方面配置了双网卡:
- 网卡1(公共网络):192.168.1.101/102
- 网卡2(私有网络):192.168.2.101/102(用于节点间心跳通信)
2.2 操作系统级配置
在两台节点上执行以下基础配置:
bash复制# 关闭防火墙和SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 配置主机名解析
cat >> /etc/hosts <<EOF
192.168.1.101 rac1 rac1.localdomain
192.168.1.102 rac2 rac2.localdomain
192.168.2.101 rac1-priv rac1-priv.localdomain
192.168.2.102 rac2-priv rac2-priv.localdomain
EOF
# 安装依赖包
yum install -y oracle-database-preinstall-19c \
kmod-oracleasm \
iscsi-initiator-utils \
ntp
3. 共享存储配置
3.1 iSCSI存储配置
在本地环境中使用Openfiler搭建iSCSI存储服务,创建三个LUN:
- OCR/Voting Disk(5GB)
- DATA(10GB)
- FRA(5GB)
在各节点上连接iSCSI目标:
bash复制iscsiadm -m discovery -t st -p 192.168.1.100
iscsiadm -m node -L all
3.2 ASM磁盘配置
配置Oracle ASMLib管理共享磁盘:
bash复制/etc/init.d/oracleasm configure
/etc/init.d/oracleasm createdisk OCR_VOTING /dev/sdb1
/etc/init.d/oracleasm createdisk DATA /dev/sdc1
/etc/init.d/oracleasm createdisk FRA /dev/sdd1
4. Grid Infrastructure安装
4.1 软件准备
从Oracle官网下载:
- LINUX.X64_193000_grid_home.zip
- LINUX.X64_193000_db_home.zip
解压到指定目录:
bash复制unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid
chown -R oracle:oinstall /u01
4.2 响应文件配置
创建grid_install.rsp响应文件:
ini复制oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/19.3.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.localdomain
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.clusterName=rac-cluster
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.storageOption=ASM
oracle.install.crs.config.useIPMI=false
oracle.install.crs.config.clusterNodes=rac1.localdomain:rac1-vip.localdomain,rac2.localdomain:rac2-vip.localdomain
oracle.install.crs.config.networkInterfaceList=eth0:192.168.1.0:1,eth1:192.168.2.0:2
oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping=
oracle.install.asm.SYSASMPassword=Oracle_123
oracle.install.asm.diskGroup.name=OCR_VOTING
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/OCR_VOTING
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*
oracle.install.asm.monitorPassword=Oracle_123
4.3 执行安装
以grid用户身份运行安装:
bash复制./gridSetup.sh -silent -responseFile /home/grid/grid_install.rsp
安装完成后执行root脚本:
bash复制/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.3.0/grid/root.sh
5. Oracle数据库软件安装
5.1 数据库软件安装
使用类似方法配置db_install.rsp响应文件,主要参数包括:
ini复制oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=rac1.localdomain
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3.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.rootconfig.executeRootScript=false
执行安装:
bash复制./runInstaller -silent -responseFile /home/oracle/db_install.rsp
5.2 创建ASM磁盘组
通过asmca工具创建数据磁盘组:
bash复制asmca -silent \
-createDiskGroup \
-diskGroupName DATA \
-disk /dev/oracleasm/disks/DATA \
-redundancy EXTERNAL \
-au_size 4
6. 创建RAC数据库
6.1 使用DBCA创建数据库
配置dbca.rsp响应文件:
ini复制responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
templateName=General_Purpose.dbc
sysPassword=Oracle_123
systemPassword=Oracle_123
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
initParams=db_create_file_dest=+DATA,db_recovery_file_dest=+FRA,db_recovery_file_dest_size=5120
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=2048
storageType=ASM
diskGroupName=DATA
recoveryGroupName=FRA
静默创建数据库:
bash复制dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp
6.2 验证集群状态
检查集群资源状态:
bash复制crsctl stat res -t
预期输出应显示所有资源均为ONLINE状态。
7. 常见问题与解决方案
7.1 安装过程中的典型错误
-
INS-20802 Oracle Cluster Verification failed
- 原因:通常由系统参数配置不当引起
- 解决方案:检查/etc/sysctl.conf参数,特别是:
bash复制
kernel.shmall = 4294967296 kernel.shmmax = 68719476736 fs.file-max = 6815744
-
ORA-15077: ASM disk group not mounted
- 原因:ASM磁盘权限或路径问题
- 解决方案:确认/etc/init.d/oracleasm listdisks显示所有磁盘,检查磁盘属组是否为asmadmin
7.2 性能优化建议
-
私有网络优化:
- 使用Jumbo Frame(MTU=9000)
- 禁用TCP校验和卸载:
bash复制
ethtool -K eth1 tx off rx off
-
ASM参数调整:
sql复制ALTER SYSTEM SET "_asm_imbalance_tolerance"=5 SCOPE=BOTH; ALTER SYSTEM SET "_asm_stripewidth"=8 SCOPE=BOTH;
8. 维护与管理技巧
8.1 日常监控命令
-
检查集群状态:
bash复制
crsctl check cluster -
查看ASM磁盘空间:
sql复制SELECT name, total_mb, free_mb FROM v$asm_diskgroup; -
检查服务分布:
sql复制SELECT instance_name, service_name FROM gv$active_services;
8.2 备份策略
配置RMAN自动备份:
sql复制RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+FRA/%U';
RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+FRA/snapcf_orcl.f';
创建每日备份脚本:
bash复制#!/bin/bash
rman target / <<EOF
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE NOPROMPT OBSOLETE;
}
EOF
经过一周的测试运行,这套双节点RAC集群在本地环境中表现稳定,成功模拟了节点故障切换场景。实际测试中,当主动关闭一个节点时,所有服务在30秒内自动迁移到另一节点,应用连接仅出现短暂中断。
