Linux下Oracle容灾的主流方案与适用场景
- Oracle Data Guard(ADG/物理备库):通过Redo传输 + Redo Apply保持与主库的事务一致性,支持最大保护/最大可用/最大性能三种保护模式,物理备库在11g起支持Active Data Guard(只读打开同时应用日志),RTO/RPO表现优秀,适合绝大多数生产容灾场景。
- Oracle GoldenGate(OGG,逻辑复制):基于抽取/应用进程实现逻辑同步,备库可读写,支持跨平台/跨版本/跨字符集,适合零停机升级、跨异构、部分表级复制等场景。
- RAC + Data Guard:同城双活/两地三中心常用组合,主备均可为RAC,结合VIP/服务/负载均衡提升可用性与连接体验。
- 备份到异地 + 定期恢复演练:以RMAN定期备份并异地存放,用于兜底恢复与演练,不能替代实时容灾但不可或缺。
以Data Guard快速落地一套Linux到Linux的物理容灾
- 规划与准备
- 明确db_name / db_unique_name / instance_name,规划归档路径、FRA、数据文件路径;主备两端安装相同版本Oracle软件,网络打通并配置静态监听 + TNSNAMES。
- 主库启用归档模式与强制日志:
- SQL> alter database archivelog;
- SQL> alter database force logging;
- 创建密码文件并同步到备库(注意备库实例名不同需改名):
- orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=*** force=y
- 主库关键参数示例(示例值请按实际替换)
- alter system set db_name=‘orcl’ scope=spfile;
- alter system set db_unique_name=‘orcl’ scope=spfile;
- alter system set log_archive_config=‘DG_CONFIG=(orcl,orcladg)’ scope=both;
- alter system set log_archive_dest_1=‘LOCATION=/u01/app/oracle/oradata/orcl/arch’ scope=both;
- alter system set log_archive_dest_2=‘SERVICE=orcladg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcladg’ scope=both;
- alter system set standby_file_management=‘AUTO’ scope=both;
- alter system set fal_client=‘orcladg’ scope=both;
- alter system set fal_server=‘orcl’ scope=both;
- alter system set db_file_name_convert=‘/u01/app/oracle/oradata/orcl’,‘+DATA/orcl’ scope=spfile;
- alter system set log_file_name_convert=‘/u01/app/oracle/oradata/orcl’,‘+DATA/orcl’ scope=spfile;
- 按需添加Standby Redo Log(与主库在线日志大小一致、数量充足)。
- 备库准备与建库
- 创建目录、配置静态监听(备库未建库时常需静态注册以便RMAN/主库连接),配置TNS连通性。
- 使用RMAN Duplicate在线创建物理备库:
- rman target sys/@orcl auxiliary sys/@orcladg
- RMAN> run { allocate channel c1 type disk; allocate auxiliary channel c2 type disk; duplicate target database for standby from active database; release channel c1; release channel c2; }
- 启动与验证
- 备库启动到mount后开始Redo Apply(可开启Active Data Guard只读查询);
- 在主备两端使用V$DATAGUARD_STATS、V$ARCHIVE_DEST_STATUS、V$MANAGED_STANDBY等视图检查同步延迟、LNS/ARCH进程、保护模式与健康状态。
切换与演练要点
- 角色转换类型
- Switchover(计划内切换):主备角色互换,业务可平滑切换,常用于维护与演练。
- Failover(故障切换):主库不可用时的应急切换,切换后原主库通常需重建为备库。
- 常用命令范式
- 使用Data Guard Broker(DGMGRL)执行 show configuration / switchover / failover,或在SQL*Plus中执行ALTER DATABASE COMMIT TO SWITCHOVER/ FAILOVER。
- 演练与度量
- 定期执行切换演练与RPO/RTO验证,确保切换步骤、网络、存储、DNS/负载均衡等依赖可用;对关键库建议建立演练手册与回退预案。
性能与可用性最佳实践
- 存储与集群
- 使用Oracle ASM管理存储,提升可用性与扩展性;RAC环境下合理放置OCR/Voting与表决盘,避免单点。
- I/O与恢复
- 启用异步I/O(DISK_ASYNCH_IO);根据负载设置FAST_START_MTTR_TARGET优化恢复时间;在CPU/IO充足时将FAST_START_PARALLEL_ROLLBACK=HIGH加速事务回滚。
- 网络与连接
- 主备与RAC节点间配置冗余链路与足够带宽;对外服务使用VIP + 连接时故障转移/快速应用通知/负载均衡能力,降低TCP超时影响。
常见坑与排查清单
- 保护模式与网络不匹配:最大保护/最大可用需SYNC传输与Standby Redo Log,网络抖动会导致主库挂起;跨城建议优先最大性能(ASYNC)并配合Fast-Start Failover。
- 路径映射错误:主备db_file_name_convert / log_file_name_convert配置不一致会导致恢复失败或文件找不到。
- 备库监听问题:备库未建库阶段需静态监听,否则主库/RMAN无法远程连接。
- 密码文件不一致:备库密码文件必须为orapw$ORACLE_SID且与主库SYS密码一致,否则日志传输/切换失败。
- SRL不足或大小不一致:导致日志缺口与传输中断,需与主库在线日志同大小、数量充足。
- 监控缺失:未监控V$ARCHIVE_GAP、V$DATAGUARD_STATS,无法提前发现同步延迟/断链。