Oracle Linux 7.3 ECS上搭建RAC 18c + 单实例DG + EMCC + DG FSFO快速故障转移全流程指南
本文详解在Oracle Linux 7.3 ECS环境部署Oracle 18c RAC集群、搭建单实例Data Guard物理备库、集成EMCC监控平台,并配置Data Guard Fast-Start Failover(FSFO)实现秒级故障转移的全流程方案。适用于高可用生产环境建设,满足99.99% SLA要求。
目录#
- 1. 引言
- 2. 系统环境与前提条件
- 3. RAC 18c集群部署
- 4. 单实例Data Guard配置
- 5. EMCC 13.5安装与集成
- 6. FSFO快速故障转移配置
- 7. 故障转移测试
- 8. 最佳实践
- 9. 参考
2. 系统环境与前提条件#
2.1 硬件配置#
| 组件 | 配置说明 |
|---|---|
| ECS实例 | 2节点 (racnode1, racnode2) |
| CPU | 8 vCPUs (支持AVX指令集) |
| 内存 | 32 GB/节点 |
| 存储 | ASM磁盘组:OCR/Voting 10G, DATA 100G, FRA 50G |
| 网络 | 2 NICs: Public IP + 私有心跳网络 |
2.2 软件环境#
# 操作系统
$ cat /etc/oracle-release
Oracle Linux Server release 7.3
# 内核要求
$ uname -r
3.10.0-514.el7.x86_64
# 软件包
oracle-database-preinstall-18c2.3 网络规划#
| 节点 | Public IP | VIP | SCAN IP | 私有心跳 |
|---|---|---|---|---|
| racnode1 | 10.0.0.101 | 10.0.0.201 | 10.0.0.210 | 192.168.1.1 |
| racnode2 | 10.0.0.102 | 10.0.0.202 | 10.0.0.210 | 192.168.1.2 |
3. RAC 18c集群部署#
3.1 Grid Infrastructure安装#
# 配置共享存储
$ sudo /sbin/scsi_id -g -u /dev/sdb
1ATA_VBOX_HARDDISK_VB00000000
# 创建udev规则
/etc/udev/rules.d/99-oracle-asmdevices.rules:
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VB00000000", SYMLINK+="oracleasm/disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"3.2 运行gridSetup#
# 静默安装模板
$ ./gridSetup.sh -silent \
oracle.install.option=CRS_CONFIG \
ORACLE_HOSTNAME=racnode1 \
INVENTORY_LOCATION=/u01/app/oraInventory \
SELECTED_LANGUAGES=en \
oracle.install.asm.OSDBA=asmdba \
oracle.install.asm.OSOPER=asmoper \
oracle.install.asm.OSASM=asmadmin \
oracle.install.asm.diskGroup.name=DATA \
oracle.install.asm.diskGroup.redundancy=EXTERNAL \
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disk1 \
oracle.install.crs.config.gpnp.configureNodeType=CLUSTER3.3 数据库软件安装#
# RAC数据库实例创建
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbName RACDB -sid RACDB \
-sysPassword oracle_123 \
-storageType ASM \
-datafileDestination +DATA \
...4. 单实例Data Guard配置#
4.1 备库环境准备#
-- 主库启用归档与Force Logging
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(RACDB,STDBYDB)';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=stdbydb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STDBYDB';4.2 备库RMAN克隆#
# 主库生成pfile
SQL> CREATE PFILE='/tmp/initRACDB.ora' FROM SPFILE;
# 备库RMAN克隆命令
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE;5. EMCC 13.5安装与集成#
5.1 安装步骤摘要#
# 安装软件仓库
$ yum install oracle-oss-release-el7
$ yum install oracle-emcc-13.5
# 配置EMCC
$ /opt/oracle/middleware/bin/emctl config oms -details5.2 添加监控目标#
- EMCC控制台访问 https://
:7803/em - 添加目标 > Oracle数据库
- 输入RAC SCAN IP和备库IP
- 启用 Data Guard Broker 监控
6. FSFO快速故障转移配置#
6.1 Data Guard Broker配置#
-- 启用Broker
SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE;
-- 创建配置
DGMGRL> CREATE CONFIGURATION DG_RAC AS PRIMARY DATABASE IS 'RACDB' CONNECT IDENTIFIER IS RACDB;
DGMGRL> ADD DATABASE 'STDBYDB' AS CONNECT IDENTIFIER IS STDBYDB;6.2 FSFO核心参数#
-- 配置快速故障转移
DGMGRL> EDIT DATABASE 'RACDB' SET PROPERTY FastStartFailoverTarget='STDBYDB';
DGMGRL> EDIT DATABASE 'STDBYDB' SET PROPERTY FastStartFailoverTarget='RACDB';
-- 启用FSFO
DGMGRL> ENABLE FAST_START FAILOVER CONDITION 385; -- Datafile Offline错误
-- 验证状态
DGMGRL> SHOW FAST_START FAILOVER;
Fast-Start Failover: ENABLED6.3 Observer部署(推荐独立ECS)#
# 启动Observer
$ dgmgrl -silent /
sys/oracle_123@RACDB \
"START OBSERVER FILE=$ORACLE_HOME/observer.racdb"7. 故障转移测试#
7.1 模拟主库故障#
# 停止主库集群服务
$ srvctl stop database -d RACDB -o abort7.2 自动切换验证#
-- 观察DGMGRL状态变化
DGMGRL> SHOW CONFIGURATION;
Configuration - DG_RAC
Failover Status: SUCCESS
Current Primary: STDBYDB7.3 回切操作#
DGMGRL> REINSTATE DATABASE 'RACDB';
Reinstatement succeeded8. 最佳实践#
-
网络心跳优化
# 私有网络MTU调整 $ ifconfig eth1 mtu 9000 -
FSFO超时设置
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30; -- 超时秒数 -
备库实时应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; -
EMCC告警规则
- 配置 DG Broker状态变更 短信通知
- 设置 FSFO事件 P1级告警