暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

Oracle 19c ADG DBA 运维常用 SQL 100 条(干货满满,建议收藏)

285

大家好,我是 JiekeXu,江湖人称“强哥”,青学会MOP技术社区主席,荣获Oracle ACE Pro称号,OpenTenBase ACE,金仓社区最具价值倡导者KVA,崖山最具价值专家YVP,IvorySQL开源社区专家顾问委员会成员,KWDB社区MVP,墨天轮MVP,墨天轮连续多年度“墨力之星”,拥有Oracle OCP/OCM认证,MySQL 5.7/8.0 OCP认证以及金仓KCA、KCP、KCM、KCSM证书,TiDB PCTA/PCTP证书、PCA、OBCA、OGCA等众多国产数据库认证证书,专注于数据库技术、系统架构及大数据运维,致力于分享最纯粹、最接地气的 DBA 实战与前沿技术洞察。如果你也对数据技术充满热忱,欢迎关注我的微信公众号“JiekeXu DBA之路”点赞、转发与评论,谢谢!

适用版本:Oracle Database 19c(12.2 及以上通用)

生产执行约定

  • 【主库】= 仅在主库执行;【备库】= 仅在备库执行;【两库】= 主备均可执行。
  • 【只读】= 纯查询,任何时候均可安全执行;【管理】= DDL/管理类命令,必须在变更窗口内、评估影响后执行,禁止随手执行。
  • 所有命令均使用 19c 合法语法,可直接粘贴执行;涉及 FETCH FIRST n ROWS ONLY 的写法要求 12c 及以上。
  • 标注【⚠️ 高风险】的命令可能导致角色转换、数据保护模式变更或数据丢失风险,执行前务必逐条核对主备库状态。

前 言

上个月看到 AI 生成的各种一百条常用命令比较火,我也就尝试了一把,结果就掉坑了,写了《OGG 19c 经典架构集成模式 DBA 常用 100 条运维命令》,AI 生成的各种错误,看着挺好但命令无法执行,视图不存在,字段不存在等问题,于是又得手动一条一条验证,在测试环境跑通后在总结归纳,话了不少时间,然后有朋友就说再来一些 ADG 相关的常用命令,我想 ADG 也就那些常用 SQL 和视图,加一起也就十来个,但有朋友提了我也就硬着头皮干了,借着 AI 的能力,生搬硬套的搞了 100 条常用命令,实际上也就最后的【ADG 高频常用快速排查 SQL】是我经常使用的,节省时间的朋友可直接看最后即可。

一、环境与版本信息(1~8)

1. 查看数据库版本【两库】【只读】

SELECT banner FROM v$version;

2. 查看数据库组件版本【两库】【只读】

SELECT product, version, status FROM product_component_version;

3. 查看数据库角色与打开模式【两库】【只读】

SELECT name, db_unique_name, database_role, open_mode FROM v$database;

备库为 ADG 时 open_mode 应为 READ ONLY WITH APPLY

4. 查看保护模式与保护级别【两库】【只读】

SELECT protection_mode, protection_level FROM v$database;

5. 查看 DBID / 数据库名 / 创建时间【两库】【只读】

SELECT dbid, name, created FROM v$database;

6. 查看平台与字节序【两库】【只读】

SELECT platform_name, platform_id FROM v$database;

主备跨平台(如 Linux↔AIX)时重点核对字节序是否一致。

7. 查看实例与主机信息【两库】【只读】

SELECT instance_name, host_name, version, status, logins FROM v$instance;

8. 查看 CDB / PDB 打开情况【两库】【只读】(仅 CDB 架构下在根容器执行)

SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

二、Data Guard 配置与传输链路(9~20)

9. 查看 DG Broker 配置项【两库】【只读】(启用 Broker 时)

SELECT database, CONNECT_IDENTIFIER, DATAGUARD_ROLE,status,ENABLED FROM v$dg_broker_config;

10. 查看 Data Guard 成员清单【两库】【只读】

SELECT db_unique_name,PARENT_DBUN,DEST_ROLE,CURRENT_SCN FROM v$dataguard_config ORDER BY db_unique_name;

11. 查看所有归档目的地【两库】【只读】

SELECT dest_id, destination, status, error FROM v$archive_dest WHERE dest_id <= 31 AND status <> 'INACTIVE' ORDER BY dest_id;

12. 查看归档目的地状态明细【两库】【只读】

SELECT dest_id, status, type, database_mode, recovery_mode FROM v$archive_dest_status WHERE dest_id <= 31 ORDER BY dest_id;

recovery_modeMANAGED REAL TIME APPLY 表示实时应用(ADG 正常形态)。

13. 查看 DG 消息日志【两库】【只读】

SELECT severity, message, timestamp FROM v$dataguard_status ORDER BY timestamp DESC FETCH FIRST 30 ROWS ONLY;

14. 查看最近 DG 错误【两库】【只读】

SELECT severity, message, timestamp FROM v$dataguard_status WHERE severity IN ('Error', 'Fatal') ORDER BY timestamp DESC FETCH FIRST 20 ROWS ONLY;

15. 查看日志传输模式(SYNC/ASYNC)【两库】【只读】

SELECT dest_id, destination, transmit_mode, affirm, net_timeout FROM v$archive_dest WHERE dest_id <= 31 AND status <> 'INACTIVE' ORDER BY dest_id;

最大保护/最大可用一般用 SYNC,最大性能用 ASYNC

16. 查看归档延迟设置(DELAY)【两库】【只读】

SELECT dest_id, destination, delay_mins FROM v$archive_dest WHERE dest_id <= 31 AND delay_mins > 0;

17. 查看归档目的地错误详情【两库】【只读】

SELECT dest_id, destination, status, error, fail_date FROM v$archive_dest WHERE error IS NOT NULL;

18. 查看 log_archive_dest_n 参数【两库】【只读】

set line 999 col name for a25 col value for a88 SELECT name, value FROM v$parameter WHERE name LIKE 'log_archive_dest%' ORDER BY name;

19. 查看 log_archive_config 参数【两库】【只读】

SELECT value FROM v$parameter WHERE name = 'log_archive_config';

示例期望值:DG_CONFIG=(PRIMDB,STBYDB)

20. 查看归档进程数【两库】【只读】

SELECT value FROM v$parameter WHERE name = 'log_archive_max_processes';

三、备库日志接收与应用(21~35)

21. 查看备库后台进程总览【备库】【只读】

SELECT process, status, client_process, thread#, sequence# FROM v$managed_standby ORDER BY process;

22. 查看 MRP 日志应用进程状态【备库】【只读】

SELECT process, status, thread#, sequence#, delay_mins FROM v$managed_standby WHERE process LIKE 'MRP%';

statusAPPLYING_LOG 表示正在应用,WAIT_FOR_LOG 表示等待新日志(属正常)。

23. 查看是否实时应用【备库】【只读】

SELECT dest_id, recovery_mode FROM v$archive_dest_status WHERE type = 'STANDBY' AND dest_id <= 31;

24. 查看介质恢复进度【备库】【只读】

SELECT item, sofar, total, units FROM v$recovery_progress WHERE type = 'Media Recovery';

25. 查看传输延迟与应用延迟【两库】【只读】

SELECT name, value, unit FROM v$dataguard_stats WHERE name IN ('transport lag', 'apply lag');

生产巡检核心指标,单位 +hh:mm:ss

26. 查看应用完成时间预估【备库】【只读】

SELECT name, value, unit FROM v$dataguard_stats WHERE name IN ('apply finish time', 'estimated startup time');

27. 查看最后收到的日志【备库】【只读】

SELECT value FROM v$dataguard_stats WHERE name = 'latest received log';

28. 查看最后应用的日志【备库】【只读】

SELECT value FROM v$dataguard_stats WHERE name = 'latest applied log';

29. 查看备库最近归档应用明细【备库】【只读】

SELECT thread#, sequence#, applied, completion_time FROM v$archived_log ORDER BY completion_time DESC FETCH FIRST 15 ROWS ONLY;

30. 查看备用日志文件(Standby Redo Log)【备库】【只读】

SELECT group#, thread#, sequence#, bytes, used, status FROM v$standby_log ORDER BY group#;

statusACTIVEused 接近满时表示正在接收当前日志,属正常。

31. 备库已应用的最大日志序列号【备库】【只读】

SELECT thread#, MAX(sequence#) last_applied FROM v$archived_log WHERE applied = 'YES' GROUP BY thread# ORDER BY thread#;

32. 主库已生成的最大日志序列号【主库】【只读】

SELECT thread#, MAX(sequence#) last_generated FROM v$log_history GROUP BY thread# ORDER BY thread#;

33. 查看日志缺口(GAP)【备库】【只读】

SELECT * FROM v$archive_gap;

无返回行表示无缺口;有行时需尽快补传归档。

34. 手动注册缺失归档日志【备库】【管理】【⚠️ 高风险】

ALTER DATABASE REGISTER LOGFILE '/data/arch/STBYDB/1_1234_1234567890.arc';

仅在 v$archive_gap 有返回且 FAL 自动补传失败时使用,路径须为备库实际可见路径。

35. 查看日志应用速率【备库】【只读】

SELECT item, sofar, units FROM v$recovery_progress WHERE item LIKE '%Apply Rate%';

四、同步状态与缺口监控(36~50)

36. 完整查看 DG 统计信息【两库】【只读】

set linesize 150; set pagesize 20; column name format a24; column value format a20; column unit format a30; column TIME_COMPUTED format a30; select name,value,unit,time_computed from v$dataguard_stats;

37. 查看 RFS 接收进程【备库】【只读】

SELECT process, status, thread#, sequence#, client_process FROM v$managed_standby WHERE process = 'RFS';

38. 查看归档(ARC)进程【两库】【只读】

SELECT process, status, thread#, sequence# FROM v$managed_standby WHERE process LIKE 'ARC%';

39. 查看 RFS 接收进度(块级)【备库】【只读】

SELECT process, thread#, sequence#, block#, blocks FROM v$managed_standby WHERE process = 'RFS';

40. 主库 redo 生成统计【主库】【只读】

SELECT name, value FROM v$sysstat WHERE name IN ('redo size', 'redo entries');

41. 备库 redo 应用统计【备库】【只读】

SELECT name, value FROM v$sysstat WHERE name IN ('redo size', 'redo entries');

42. 主备日志序列号对比【两库】【只读】

-- 主库执行: SELECT thread#, MAX(sequence#) last_generated FROM v$log_history GROUP BY thread# ORDER BY thread#; -- 备库执行: SELECT thread#, MAX(sequence#) last_applied FROM v$archived_log WHERE applied = 'YES' GROUP BY thread# ORDER BY thread#;

两值差距持续增大即表示存在同步问题,需结合 v$archive_gap 与告警日志定位。

43. 按天统计备库归档应用量【备库】【只读】

SELECT TO_CHAR(completion_time, 'YYYY-MM-DD') day, thread#, COUNT(*) logs FROM v$archived_log WHERE applied = 'YES' GROUP BY TO_CHAR(completion_time, 'YYYY-MM-DD'), thread# ORDER BY day DESC FETCH FIRST 10 ROWS ONLY;

44. 按小时统计归档生成量(容量规划)【主库】【只读】

SELECT TO_CHAR(first_time, 'YYYY-MM-DD HH24') hour, COUNT(*) cnt, ROUND(SUM(blocks * block_size) / 1024 / 1024, 1) mb FROM v$archived_log where DEST_ID=1 GROUP BY TO_CHAR(first_time, 'YYYY-MM-DD HH24') ORDER BY hour DESC FETCH FIRST 24 ROWS ONLY; --按天统计主库归档量 SELECT TO_CHAR(first_time, 'YYYY-MM-DD') day, COUNT(*) cnt, ROUND(SUM(blocks * block_size) / 1024 / 1024, 1) mb FROM v$archived_log where DEST_ID=1 GROUP BY TO_CHAR(first_time, 'YYYY-MM-DD') ORDER BY day DESC FETCH FIRST 15 ROWS ONLY;

45. 查看 alert 日志中近 1 天 ORA- 错误【两库】【只读】

SELECT originating_timestamp, message_text FROM v$diag_alert_ext WHERE message_text LIKE '%ORA-%' AND originating_timestamp > SYSDATE - 1 ORDER BY originating_timestamp DESC FETCH FIRST 30 ROWS ONLY;

46. 查看近 1 天 DG 相关告警(ORA-16xx / ORA-31xx / ORA-125xx)【两库】【只读】

SELECT originating_timestamp, message_text FROM v$diag_alert_ext WHERE (message_text LIKE '%ORA-16%' OR message_text LIKE '%ORA-31%' OR message_text LIKE '%ORA-125%') AND originating_timestamp > SYSDATE - 1 ORDER BY originating_timestamp DESC FETCH FIRST 20 ROWS ONLY;

47. 查看每个线程最后归档时间【两库】【只读】

SELECT thread#, MAX(first_time) last_arch FROM v$archived_log GROUP BY thread#;

48. 查看归档目的地有效性【两库】【只读】

col DESTINATION for a35 SELECT dest_id, destination, valid_now, valid_type, valid_role FROM v$archive_dest WHERE dest_id <= 31 AND status <> 'INACTIVE' ORDER BY dest_id;

49. 查看 RAC 各实例状态【两库】【只读】

SELECT inst_id, instance_name, status, database_status FROM gv$instance ORDER BY inst_id;

50. 归档日志按线程汇总【两库】【只读】

SELECT thread#, COUNT(*) cnt, MIN(sequence#) min_seq, MAX(sequence#) max_seq FROM v$archived_log GROUP BY thread# ORDER BY thread#;

五、ADG 只读查询与快照备库(51~60)

51. 确认 ADG 处于只读打开 + 实时应用状态【备库】【只读】

SELECT name, open_mode, database_role FROM v$database;

期望输出:open_mode = READ ONLY WITH APPLYdatabase_role = PHYSICAL STANDBY

52. 查看当前 SCN【两库】【只读】

SELECT to_char(current_scn) FROM v$database;

53. 查看数据库当前时间【两库】【只读】

SELECT SYSDATE FROM dual;

54. 查看 ADG 上用户会话【备库】【只读】

SELECT sid, serial#, username, program, status FROM v$session WHERE type = 'USER' ORDER BY sid;

55. 查看备库恢复相关后台会话【备库】【只读】

SELECT sid, serial#, program, event, wait_class FROM v$session WHERE program LIKE '%MRP%' OR program LIKE '%RFS%' OR program LIKE '%ARC%';

56. 查看 undo 使用情况(ADG 报表查询撑满 undo 时排查)【备库】【只读】

SELECT begin_time, end_time, undotsn, maxquerylen FROM v$undostat WHERE end_time > SYSDATE - 1 ORDER BY begin_time;

57. 查看临时表空间使用【备库】【只读】

SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 1) mb FROM dba_temp_files GROUP BY tablespace_name;

58. 查看快照备库状态【备库】【只读】

SELECT open_mode, database_role FROM v$database;

快照备库形态下:open_mode = READ WRITEdatabase_role = SNAPSHOT STANDBY(业务测试用,勿当生产主库)。

59. 快照备库转回物理备库【备库】【管理】【⚠️ 高风险】

ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

转换前必须结束快照备库上的所有读写会话,转换后重启实例并重新启动日志应用。

60. ADG 用户会话 Top 等待事件【备库】【只读】

SELECT event, COUNT(*) cnt, ROUND(SUM(seconds_in_wait)) secs FROM v$session WHERE type = 'USER' AND wait_class <> 'Idle' GROUP BY event ORDER BY secs DESC FETCH FIRST 10 ROWS ONLY;

六、归档日志管理(61~70)

61. 查看最近归档日志文件【两库】【只读】

SELECT name, thread#, sequence#, blocks, block_size, completion_time FROM v$archived_log ORDER BY completion_time DESC FETCH FIRST 20 ROWS ONLY;

62. 统计已应用归档总占用空间【备库】【只读】

SELECT ROUND(SUM(blocks * block_size) / 1024 / 1024 / 1024, 2) gb FROM v$archived_log WHERE applied = 'YES';

63. 按目的地统计归档数量与大小【两库】【只读】

SELECT dest_id, COUNT(*) cnt, ROUND(SUM(blocks * block_size) / 1024 / 1024, 1) mb FROM v$archived_log GROUP BY dest_id;

64. 查看未应用的归档【备库】【只读】

SELECT thread#, sequence#, name FROM v$archived_log WHERE applied = 'NO' ORDER BY thread#, sequence#;

65. 查看快速恢复区(FRA)参数【两库】【只读】

SELECT name, value FROM v$parameter WHERE name IN ('db_recovery_file_dest', 'db_recovery_file_dest_size');

66. 查看 FRA 使用率【两库】【只读】

SELECT name, ROUND(space_limit / 1024 / 1024 / 1024, 2) limit_gb, ROUND(space_used / 1024 / 1024 / 1024, 2) used_gb, ROUND(space_reclaimable / 1024 / 1024 / 1024, 2) reclaim_gb FROM v$recovery_file_dest;

67. 查看归档模式【两库】【只读】

SELECT log_mode FROM v$database;

ADG 要求 log_mode = ARCHIVELOG

68. 主库手动切换日志【主库】【管理】

ALTER SYSTEM SWITCH LOGFILE;

常用于手工触发归档以观察传输链路是否正常。

69. 主库归档当前联机日志【主库】【管理】

ALTER SYSTEM ARCHIVE LOG CURRENT;

70. 查看未删除归档的时间跨度【两库】【只读】

SELECT MIN(completion_time) oldest, MAX(completion_time) newest, COUNT(*) cnt FROM v$archived_log WHERE deleted = 'NO';

配合 RMAN 删除策略评估归档保留量;归档清理务必走 RMAN,禁止手工删文件。


七、角色转换与保护模式(71~85)

71. 查看当前切换状态【两库】【只读】

SELECT database_role, switchover_status FROM v$database;

主库期望 TO STANDBY / SESSIONS ACTIVE;备库期望 TO PRIMARY / NOT ALLOWED

72. 查看数据库综合状态【两库】【只读】

SELECT database_role, open_mode, protection_mode, switchover_status FROM v$database;

73. 检查主库是否具备切换条件【主库】【只读】

SELECT switchover_status FROM v$database WHERE switchover_status IN ('TO STANDBY', 'SESSIONS ACTIVE', 'NOT ALLOWED');

74. 切换前确认备库无日志缺口【备库】【只读】

SELECT * FROM v$archive_gap;

无返回行才允许继续执行 switchover。

75. 切换前确认 MRP 应用进程状态【备库】【只读】

SELECT process, status FROM v$managed_standby WHERE process LIKE 'MRP%';

76. 主库执行 switchover(切为备库)【主库】【管理】【⚠️ 高风险】

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

执行前必须满足 71~75 检查项;执行后主库将关闭,需 STARTUP MOUNT

77. 备库执行 switchover(切为主库)【备库】【管理】【⚠️ 高风险】

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

执行后原备库打开为读写主库:ALTER DATABASE OPEN;

78. 备库启动实时日志应用【备库】【管理】

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

19c 推荐实时应用写法;若实例为 mount 状态,随后执行 ALTER DATABASE OPEN; 开启 ADG 只读。

79. 备库停止日志应用【备库】【管理】

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

80. 备库打开为只读(ADG)【备库】【管理】

ALTER DATABASE OPEN;

在 mount 状态执行,打开后即为 READ ONLY WITH APPLY(配合实时应用)。

81. 设置保护模式为最大可用性【主库】【管理】【⚠️ 高风险】

ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

需要主备库 redo 链路正常(SYNC 传输)且所有备库可达,否则可能报错或引发保护级别降级,建议通过 DGMGRL 统一管理。

82. 查看 Broker 中配置的保护模式【两库】【只读】

select DATABASE,DATAGUARD_ROLE,ENABLED,STATUS,VERSION from v$dg_broker_config;

83. 查看闪回数据库状态【两库】【只读】

SELECT flashback_on FROM v$database;

84. 主备 SCN 对比【两库】【只读】

-- 主库执行: SELECT to_char(current_scn) FROM v$database; -- 备库执行: SELECT to_char(current_scn) FROM v$database;

备库 SCN 落后于主库属正常,重点应看 apply lag;若差距持续放大则异常。

85. 查看切换 / 故障切换历史【两库】【只读】

SELECT originating_timestamp, message_text FROM v$diag_alert_ext WHERE message_text LIKE '%Switchover%' OR message_text LIKE '%Failover%' ORDER BY originating_timestamp DESC FETCH FIRST 10 ROWS ONLY;

八、性能监控(86~95)

86. 备库 Top 等待事件【备库】【只读】

SELECT event, wait_class, total_waits, ROUND(time_waited_micro / 1000000, 1) secs FROM v$system_event WHERE wait_class <> 'Idle' ORDER BY time_waited_micro DESC FETCH FIRST 10 ROWS ONLY;

87. 查看恢复并行相关参数【两库】【只读】

SELECT name, value FROM v$parameter WHERE name IN ('recovery_parallelism', 'parallel_execution_enabled');

88. 查看 MRP 进程数量【备库】【只读】

SELECT process, COUNT(*) FROM v$managed_standby WHERE process LIKE 'MRP%' GROUP BY process;

89. 查看 RFS 接收会话等待【备库】【只读】

SELECT sid, serial#, program, event, seconds_in_wait FROM v$session WHERE program LIKE '%RFS%';

90. 查看日志传输网络参数【两库】【只读】

SELECT dest_id, destination, transmit_mode, net_timeout, max_connections FROM v$archive_dest WHERE dest_id <= 31 AND status <> 'INACTIVE' ORDER BY dest_id;

91. 查看 SGA 信息【两库】【只读】

SELECT * FROM v$sgainfo;

92. 查看 PGA 使用情况【两库】【只读】

SELECT name, ROUND(value / 1024 / 1024, 1) mb FROM v$pgastat WHERE name IN ('maximum PGA allocated', 'total PGA allocated');

93. 查看物理 I/O 统计【两库】【只读】

SELECT name, value FROM v$sysstat WHERE name IN ('physical reads', 'physical writes', 'physical read total bytes');

94. 查看主机负载(Linux / Unix)【两库】【只读】

SELECT stat_name, value FROM v$osstat WHERE stat_name IN ('LOAD', 'CPU_USED_TICKS') ORDER BY stat_name;

Windows 平台无 LOAD 统计,仅看 CPU_USED_TICKS 等指标。

95. 查看当前正在传输的日志【备库】【只读】

SELECT process, status, thread#, sequence#, client_process FROM v$managed_standby WHERE client_process IN ('LGWR', 'ARCH');

九、参数与日常维护(96~100)

96. 查看 DG 关键参数【两库】【只读】

SELECT name, value FROM v$parameter WHERE name IN ('standby_file_management', 'fal_client', 'fal_server', 'db_file_name_convert', 'log_file_name_convert', 'dg_broker_start') ORDER BY name;

standby_file_management 必须为 AUTO,否则备库无法自动创建数据文件。

97. 查看归档格式与主归档目的地参数【两库】【只读】

SELECT name, value FROM v$parameter WHERE name IN ('log_archive_format', 'log_archive_dest_1');

98. 查看 redo 线程状态【两库】【只读】

SELECT thread#, status, enabled FROM v$thread;

99. 归档日志状态汇总【两库】【只读】

SELECT archived, applied, status, COUNT(*) FROM v$archived_log GROUP BY archived, applied, status ORDER BY archived, applied;

100. ADG 核心巡检组合(一条命令完成健康检查)【两库】【只读】

-- ① 角色/打开模式/保护级别/切换状态 SELECT database_role, open_mode, protection_mode, protection_level, switchover_status, current_scn FROM v$database; -- ② 传输与应用延迟(核心指标) SELECT name, value, unit FROM v$dataguard_stats WHERE name IN ('transport lag', 'apply lag'); -- ③ 日志缺口(无行 = 正常) SELECT * FROM v$archive_gap; -- ④ 归档目的地错误(无行 = 正常) SELECT dest_id, destination, status, error FROM v$archive_dest WHERE dest_id <= 31 AND status <> 'INACTIVE' AND error IS NOT NULL; -- ⑤ 备库应用进程(APPLYING_LOG / WAIT_FOR_LOG 为正常) SELECT process, status FROM v$managed_standby WHERE process LIKE 'MRP%';

巡检结论:① 角色与保护级别符合预期、② 延迟无持续增长、③④ 无输出、⑤ 状态正常,即认为 ADG 健康。


附:使用建议

  1. 查询类命令(标注【只读】)可在生产随时执行,不会产生锁与负载风险(大表统计类查询避开业务高峰)。
  2. 管理类命令(标注【管理】)务必在变更窗口内执行,并在执行前完成 71~75、33、25 等检查。
  3. DG 切换首选 DGMGRLDGMGRL> switchover to stbydb;,SQL 手工切换仅用于 Broker 不可用时的应急场景。
  4. 归档清理只允许 RMANRMAN> delete archivelog all completed before 'sysdate-7';,禁止直接删文件。
  5. 本清单所有 SQL 均面向 Oracle 19c 验证过语法(12.2+ 通用);不同小版本个别视图列名如有出入,以 DESC 输出为准。

附:ADG 高频常用快速排查 SQL

--0.备库常用参数查询
set lines 500 pages 999
col value for a110
col name for a30
select name,value
from v$parameter
where name in('db_name','db_unique_name',
'log_archive_config',
'log_archive_dest_1',
'log_archive_dest_2',
'log_archive_dest_3',
'log_archive_max_processes',
'fal_server',
'fal_client',
'db_file_name_convert',
'log_file_name_convert',
'standby_file_management');
select DB_UNIQUE_NAME,PARENT_DBUN,DEST_ROLE,CURRENT_SCN from V$DATAGUARD_CONFIG;

--1.查询主备的同步情况,备库执行
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

--从归档日志应用情况来检查主备同步情况,主库上查询
set linesize 20o pagesize 999
col standby_tns_name format a30
select inst_id,max(sequence#),max(name) standby_tns_name 
from gv$archived_log 
where standby_dest='YES' and applied='YES' group by inst_id order by 1;
select inst_id,max(sequence#) from gv$archived_log where standby_dest='NO' group by inst_id order by 1;

--2.查询备库的进程状态
SELECT PROCESS, STATUS,SEQUENCE#,thread# FROM V$MANAGED_STANDBY;
SELECT PROCESS, STATUS,SEQUENCE#,thread#,blocks,block# FROM V$MANAGED_STANDBY;
SELECT PROCESS, STATUS,SEQUENCE#,thread#,blocks,block# FROM V$MANAGED_STANDBY where PROCESS='MRP0';
--在 12c 及更高版本中,V$MANAGED_STANDBY 视图已被 V$DATAGUARD_PROCESS 取代,不过还能使用。
SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;

--3.查询备库的角色
set linesize 160;
column DBNAME format a8;
column DBUNAME format a10;
column cftype format a8;
column OPEN_MODE format a25;
column DATABASE_ROLE format a18;
select name dbname,db_unique_name dbuname,controlfile_type cftype,database_role,open_mode from v$database;

--4.查询备库的日志应用模式
SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=1;   

--5.开启日志应用进程:
--应用stanby 实时同步
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE parallel 64 USING CURRENT LOGFILE DISCONNECT; --使用并行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;   --19c 新语法
alter database recover managed standby database using current logfile disconnect from session;  --11g 语法
 
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

--6.取消日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

--7.主库查看有如下错误:
SQL> select dest_id,error from v$archive_dest where DEST_ID<4;
SQL> 
   DEST_ID ERROR
---------- -----------------------------------------------------------------
         1
         2 ORA-12154: TNS:could not resolve the connect identifier specified
         3
       
--8.查看 alert 日志中近 1 天 ORA- 错误
SELECT originating_timestamp, message_text
FROM   v$diag_alert_ext
WHERE  message_text LIKE '%ORA-%'
  AND  originating_timestamp > SYSDATE - 1
ORDER  BY originating_timestamp DESC
FETCH FIRST 30 ROWS ONLY;

--用如下SQL查看备库无报错
select error from v$archive_dest where target='STANDBY';

--9. 查看主备库事件日志
col MESSAGE for a120
SELECT MESSAGE_NUM, MESSAGE FROM V$DATAGUARD_STATUS ORDER BY TIMESTAMP;

--10.其他备库查询 SQL
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select THREAD#,count(FIRST_TIME) from v$archived_log where APPLIED='NO' group by THREAD#;

select THREAD#,min(FIRST_TIME) from v$archived_log where APPLIED='NO' group by THREAD#;
select THREAD#,min(SEQUENCE#) from v$archived_log where APPLIED='NO' group by THREAD#;
select BACKUP_COUNT from v$archived_log where THREAD#=&1 and SEQUENCE#=&2;

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2026-09-08 10:32:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论