在 CentOS 上部署 Oracle RAC 的实操指南
一 环境规划与准备
-
节点与网络
- 至少准备2 台服务器,分别配置Public IP、Virtual IP(VIP)、Private IP与SCAN IP;Public/VIP/SCAN 位于同一网段,Private 使用独立网段。
- 网卡命名在两节点需保持一致(如都使用ens33/ens34),主机名需符合规范(避免使用下划线等特殊字符)。
- 示例(/etc/hosts):
- Public:192.168.59.62 rac1、192.168.59.63 rac2
- VIP:192.168.59.64 rac1-vip、192.168.59.65 rac2-vip
- Private:192.168.2.62 rac1-priv、192.168.2.63 rac2-priv
- SCAN:192.168.59.66/67/68 rac-scan(建议至少3 个SCAN 地址,18c 起更推荐)。
-
共享存储与磁盘组(ASM)
- 典型规划:
- OCR+Voting:3 块磁盘,Normal 冗余,单盘≥1G(常用 3–10G)。
- MGMT(可选 GIMR):External 冗余,建议≥30G。
- DATA:业务数据,External 冗余,容量按业务评估。
- FRA:归档/闪回,External 冗余。
- 虚拟化/云平台建议使用厚置备、置零的共享磁盘,并在存储控制器上启用共享总线;如使用 iSCSI,需在各节点添加控制器并映射同一共享磁盘。
-
软件与版本
- 常见组合:CentOS 7.x + Oracle 19c/21c(19c 为长期支持版本,21c 功能更新)。
- 安装介质:下载并校验
- LINUX.X64_193000_grid_home.zip(19c GI)
- LINUX.X64_193000_db_home.zip(19c DB)
- 或 21c 对应 ZIP 包;校验 MD5 确保完整性。
二 操作系统与基础配置
-
基础安全与服务
- 关闭防火墙与 SELinux(测试环境常用做法;生产请按需放通端口/服务):
- systemctl stop firewalld && systemctl disable firewalld
- sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config && setenforce 0
- 禁用 avahi-daemon(避免多播干扰):
- systemctl stop avahi-daemon.socket avahi-daemon.service
- systemctl disable avahi-daemon.socket avahi-daemon.service
- 时间同步:RAC 使用 CTSS,请停止其他 NTP/Chrony 服务以免冲突。
-
依赖包与用户/目录
- 配置本地或内网 YUM 源(挂载 ISO),安装常用依赖:
- yum -y install bc gcc gcc-c++ binutils make gdb cmake glibc ksh elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc-devel libaio libaio-devel libXrender libX11 libXau sysstat libXi libXtst libgcc librdmacm-devel libstdc++ libstdc+±devel libxcb net-tools nfs-utils compat-libcap1 compat-libstdc++ smartmontools targetcli python python-configshell python-rtslib python-six unixODBC unixODBC-devel iscsi-initiator-utils device-mapper device-mapper-multipath unbound bind-utils
- 如缺 compat-libstdc+±33,可单独 RPM 安装。
- 创建用户与组(示例 UID/GID,保持两节点一致):
- groupadd -g 11001 oinstall;groupadd -g 11002 dba;groupadd -g 11003 oper
- groupadd -g 11004 backupdba;groupadd -g 11005 dgdba;groupadd -g 11006 kmdba
- groupadd -g 11007 asmdba;groupadd -g 11008 asmoper;groupadd -g 11009 asmadmin;groupadd -g 11010 racdba
- useradd -u 11011 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
- useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
- 创建目录并授权:
- mkdir -p /u01/app/{19.0.0/grid,grid,oracle,oracle/product/19.0.0/db_1,oraInventory}
- chown -R grid:oinstall /u01/app/{grid,19.0.0/grid,oraInventory}
- chown -R oracle:oinstall /u01/app/oracle
- chmod -R 775 /u01
- Grid 预检 RPM:
- 在 GI 解压目录的 cv/rpm 下执行:rpm -ivh cvuqdisk-1.0.10-1.rpm(两节点)。
-
内核参数与资源限制
- 编辑 /etc/security/limits.conf(示例):
- oracle soft nofile 1024;oracle hard nofile 65536
- oracle soft nproc 2047;oracle hard nproc 16384
- grid soft nofile 1024;grid hard nofile 65536
- grid soft nproc 2047;grid hard nproc 16384
- 编辑 /etc/sysctl.conf(示例,按内存与业务调整):
- fs.aio-max-nr = 1048576
- fs.file-max = 6815744
- kernel.shmall = 1073741824
- kernel.shmmax = 4398046511104
- 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 生效。
三 共享存储与集群前置配置
-
共享磁盘识别与绑定
- 方式一(UDEV,推荐):
- 获取磁盘 SCSI_ID:/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdX
- 写入规则(/etc/udev/rules.d/99-oracle-asmdevices.rules):
- KERNEL==“sd*”, BUS==“scsi”, PROGRAM==“/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name”, RESULT==“”, NAME=“asm-diskX”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
- 生效:/sbin/start_udev(重启后再次验证)。
- 方式二(多路径):安装 device-mapper-multipath,配置多路径聚合后,再按多路径设备名进行 UDEV 绑定。
-
用户互信与目录同步
- 配置 grid/oracle 用户的 SSH 互信(两节点互相免密),便于 OUI/静默安装节点间操作。
- 仅在 节点1 解压 GI/DB 安装介质,完成后将 GI 的 cvuqdisk RPM 拷贝至节点2安装;其余目录可按需同步。
四 安装 Grid Infrastructure 与创建 ASM 磁盘组
-
图形化安装(OUI)
- 以 grid 用户执行:/u01/app/19.0.0/grid/runInstaller
- 选择 Install and Configure Grid Infrastructure,高级安装;在“Cluster Configuration”添加两节点,配置网卡角色(Public/Private),设置 SCAN 名称与地址(与 /etc/hosts 一致)。
- 存储选择 Oracle ASM,使用 ASMCA 创建磁盘组(如:OCR、MGMT、DATA、FRA),完成后返回 OUI 继续。
- 安装过程中在两节点依次执行 root.sh;安装完成用 crsctl/cvutl 等工具做集群健康检查。
-
静默安装(可选)
- 使用响应文件执行 gridSetup.sh(或 runInstaller -silent -responseFile ),配合 SSH 互信与预检通过后进行无人值守安装;同样在 root 下执行脚本完成集群栈配置。
五 安装数据库软件与创建 RAC 数据库
-
安装数据库软件
- 以 oracle 用户执行:/u01/app/oracle/product/19.0.0/db_1/runInstaller(或 dbca 静默模式),选择仅安装软件(不含实例)。
- 完成后执行 root.sh(如有),确保 ORACLE_HOME 与 ORACLE_BASE 权限正确。
-
创建 RAC 数据库(DBCA)
- 图形化:dbca -silent -createDatabase …(选择 RAC、目标 ASM 磁盘组、字符集、SGA/PGA、EM 等);或交互式 DBCA 配置。
- 静默:准备响应文件,指定集群、实例数量、服务名、存储、内存参数等,一键创建。
-
验证与常见问题
- 集群状态:crsctl stat res -t;监听:srvctl status listener;SCAN:nslookup rac-scan;实例:srvctl status database -d <db_name>
- 常见排错要点:
- 网卡名不一致、/etc/hosts 解析错误会导致 VIP/SCAN 异常;
- 共享磁盘未正确共享或未通过 UDEV/多路径绑定,会导致 ASM 磁盘不可见;
- 未停止 NTP/Chrony 会与 CTSS 冲突,影响节点时间同步;
- 防火墙/SELinux 未关闭或放通不全,会影响节点间通信与表决盘访问。