Oracle DG / ADG日常巡检操作指南

发布时间:2026/5/22 16:47:01

Oracle DG / ADG日常巡检操作指南 一、Oracle DG / ADG 简介1. 什么是 DGDG全称Data Guard是 Oracle 提供的主备容灾方案。它通过将主库产生的重做日志传输到备库并在备库上持续应用日志来保持主备数据同步。DG 的核心作用主要有三点容灾保护主库故障时可切换到备库继续提供服务数据同步尽量保证备库数据与主库保持一致高可用保障降低单点故障带来的业务中断风险简单理解DG 给主库准备一个随时待命的备库。2. 什么是 ADGADG全称Active Data Guard可以理解为增强版的 Data Guard。它和普通 DG 的区别在于普通 DG 的物理备库通常主要用于恢复和切换ADG 的物理备库在应用日志的同时还可以对外提供只读访问。也就是说ADG 不只是“备着不用”而是可以一边同步一边查。ADG 的主要特点备库实时接收并应用主库日志备库可只读开放可用于查询分流、报表查询、容灾备份主库故障时也可以作为切换目标简单理解ADG 不仅能备还能查。3. DG 和 ADG 的区别对比项DGADG是否具备主备同步能力是是是否用于容灾切换是是备库是否可只读开放一般不强调在线查询是备库是否可边应用边查询不属于核心特点是典型用途容灾、故障切换容灾 查询分流4. 一句话理解你可以直接记这两个DG主备同步主要用于容灾ADG在 DG 基础上备库还能只读查询二、本文适用范围先在 CDB 层查状态再在 PDB 层做简单写入验证。适用于以下环境单机 → 单机RAC → 单机RAC → RAC三、巡检层级说明1. 日常巡检以CDB 层级为主以下检查命令均在CDB 层级执行v$archive_destv$dataguard_statsv$databasev$managed_standby2. 简单写入验证在PDB 层级执行建表、插数、查询这部分属于业务验证应在某个业务PDB内执行。每个 CDB 任选一个 PDB验证即可。3. 结论状态检查查 CDB 层同步验证查 PDB 层四、标准巡检步骤1. 主库检查归档传输状态层级CDBset line 200 col error for a30 col dest_name for a30 select dest_name,status,error,target,process from v$archive_dest where dest_name in (LOG_ARCHIVE_DEST_1,LOG_ARCHIVE_DEST_2,LOG_ARCHIVE_DEST_3,LOG_ARCHIVE_DEST_4);正常判断发往备库的目标为STANDBYSTATUS VALIDERROR为空2. 备库检查同步延迟层级CDBset linesize 200 select name,value,datum_time from v$dataguard_stats where name in (transport lag,apply lag,apply finish time);正常判断transport lag很小或为00 00:00:00apply lag很小或为00 00:00:003. 备库检查角色和打开模式层级CDBset linesize 200 col db_unique_name for a20 col database_role for a20 col open_mode for a25 select name,db_unique_name,database_role,open_mode from v$database;正常判断DATABASE_ROLE PHYSICAL STANDBYOPEN_MODE READ ONLY WITH APPLY4. 备库检查接收/应用进程层级CDBset linesize 200 col process for a10 col status for a20 select process,status,thread#,sequence# from v$managed_standby;正常判断能看到RFS结合前面 2、3 步正常可判断 ADG 状态基本正常5. 主备网络连通检查层级操作系统层tnsping 主库服务名 tnsping 备库服务名正常判断tnsping返回正常6. 简单写入验证放最后层级PDB这一步作为你日常巡检的最终确认手段。每个 CDB 任选一个业务 PDB 验证即可。第一步进入主库某个业务 PDB例如export ORACLE_SIDHISCDB1; sqlplus / as sysdba show pdbs; show con_name; alter session set containerHISDB; show con_name;第二步主库创建测试表并插入数据CREATE TABLE ADGTEST ( id NUMBER PRIMARY KEY, create_time DATE DEFAULT SYSDATE ); INSERT INTO ADGTEST (id) VALUES (1); COMMIT; INSERT INTO ADGTEST (id) VALUES (2); COMMIT; INSERT INTO ADGTEST (id) VALUES (3); COMMIT; SELECT * FROM ADGTEST;第三步切到备库对应 PDB 查询例如export ORACLE_SIDHISCDB1; sqlplus / as sysdba show pdbs; show con_name; alter session set containerHISDB; show con_name;然后查询SELECT * FROM ADGTEST;正常判断主库插入成功备库能查到相同数据说明该 PDB 对应数据同步正常ADG 验证通过。五、适用性说明1. 单机 → 单机适用。2. RAC → 单机适用。RAC 主库任选一个实例执行 CDB 层检查PDB 验证任选一个业务 PDB。3. RAC → RAC适用。主备两端任选一个正常实例执行 CDB 层检查PDB 验证同样任选一个业务 PDB。在 RAC 环境中v$managed_standby里出现多个thread#、多个RFS属于正常现象。六、正常判定标准满足以下条件可判断ADG 正常主库发往备库的归档目标STATUS VALID主库归档目标ERROR为空备库DATABASE_ROLE PHYSICAL STANDBY备库OPEN_MODE READ ONLY WITH APPLYtransport lag很小或为 0apply lag很小或为 0备库存在RFS主备tnsping正常主库 PDB 插入测试数据后备库对应 PDB 能查到相同数据

相关新闻