查询ORACLE主备同步是否有延迟
查询主备同步是否有延迟,最直接的方法是检查备库的传输延迟(Transport Lag) 和应用延迟(Apply Lag),理想状态应为 +00 00:00:00(零延迟)。这两个指标分别衡量 网络传输 与 Redo应用 的速度,可以用下表快速理解:
指标: 核心含义 故障场景与DBA实战解读
Transport Lag (传输延迟) 衡量主库生成的Redo日志能否及时通过网络传输到备库 若此值持续 > 0,通常指向网络瓶颈或主库生成日志过快
Apply Lag (应用延迟) 衡量备库接收到Redo日志后,能否及时写入数据文件 若此值持续 > 0,通常意味着备库I/O性能不足,或应用速度跟不上主库的写入压力。
核心监控方法
可以通过以下几种视图和方法监控同步状态。
- 查询 V$DATAGUARD_STATS 视图 (最直接)
在备库上执行以下SQL,可查看最关键的延迟指标:
sql
SET LINESIZE 200
COL NAME FOR A20
COL VALUE FOR A20
SELECT NAME, VALUE, TIME_COMPUTED
FROM V$DATAGUARD_STATS
WHERE NAME IN ('transport lag', 'apply lag');
- 检查应用进程状态
在备库上查询 V$MANAGED_STANDBY,确认关键的 MRP0(Managed Recovery Process)进程是否在正常工作
sql
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#
FROM V$MANAGED_STANDBY;
- 通过归档日志序列号确认
在主库和备库上分别查询,对比最新生成的归档日志和应用到的归档日志序列号:
sql
-- 在主库执行,查看最新已归档的日志序列号
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG);
-- 在备库执行,查看最新已成功应用的日志序列号
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED = 'YES';

浙公网安备 33010602011771号