背景
当遇到DG 同步延迟之奇怪的经典报错:ORA-16191案例时,根据vdataguard_stats 的apply lag 值做同步时间监控,就会存在一定的报警延迟,为了解决这个问题,我想到了用主库与备库的scn 时间比较来确定同步是否延迟。
测试
- 主库报错: ORA-01031
SQL> select dest_name,status,error from v$archive_dest where dest_id=1 or dest_id=2; DEST_NAME STATUS ERROR -------------------- -------------------- ------------------------------------------------------------ LOG_ARCHIVE_DEST_1 VALID LOG_ARCHIVE_DEST_2 ERROR ORA-01031: insufficient privileges
复制
- 主库scn时间:
SQL> select to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database; TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:38:11
复制
- 备库scn时间及apply lag 状态值:
SQL> select to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database; TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:38:18 SQL> select value from v$dataguard_stats where NAME='apply lag'; VALUE -------------------- +00 00:00:00
复制
以上操作可以看出,虽然主备同步异常,但是scn 号还在同步更新,apply lag 值:+00 00:00:00
- 主库切归档
SQL> alter system switch logfile; System altered.
复制
- 主库scn时间:
SQL> select to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database; TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:45:52
复制
- 查看备库scn时间
SQL> select to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database; TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:45:21 SQL> / TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:45:21 SQL> / TO_CHAR(SCN_TO_TIME ------------------- 2022-11-08 11:45:21
复制
- 多执行了几次,备库的scn时间不再更新
- 查看同步时间,apply lag时间依然: +00 00:00:00 ,这就失去了同步延迟报警的意义了
SQL> select * from v$dataguard_stats where NAME='apply lag'; NAME VALUE UNIT TIME_COMPUTED DATUM_TIME ---------- -------------------- ------------------------------ ------------------------------ ------------------------------ apply lag +00 00:00:00 day(2) to second(0) interval 11/08/2022 11:51:27 11/08/2022 11:45:23
复制
结论
1、apply lag 的VALUE值依然:+00 00:00:00
2、TIME_COMPUTED:11:51:27 DATUM_TIME:11:45:23 已经看到延迟了。
3、从这就可以看出VALUE:+00 00:00:00 ,并不是很敏感。可以TIME_COMPUTED与DATUM_TIME提高敏感度监控。
4、考虑到主库备库网络的情况,我采用的是通过tns远程连接主库与备库的scn时间比对验证同步情况,顺便可以验证下网络的连通性。
文章推荐
《Oracle_索引重建—优化索引碎片》
《Oracle 自动收集统计信息机制》
《Oracle 脚本实现简单的审计功能》
《oracle 监控表空间脚本 每月10号0点至06点不报警》
《DBA_TAB_MODIFICATIONS表的刷新策略测试》
《FY_Recover_Data.dbf》
《Oracle RAC 集群迁移文件操作.pdf》
《Oracle Date 字段索引使用测试.dbf》
《Oracle 诊断案例 :因应用死循环导致的CPU过高》
《Oracle 慢SQL监控脚本》
《Oracle 慢SQL监控测试及监控脚本.pdf》
《记录一起索引rebuild与收集统计信息的事故》
《RAC DG删除备库redo时报ORA-01623》
《ASH报告发现:os thread startup 等待事件分析》
《问答榜上引发的Oracle并行的探究(一)》
《问答榜上引发的Oracle并行的探究(二)》
– 安装系列
文章推荐
《ORACLE_19C_linux安装.pdf》
《Oracle 19c-手工建库.pdf》
《19c单库升级19.11补丁.pdf
19c_rac补丁《19.11-p32841500》.pdf
《oracle_图形-单实例11.2.0.4升级19.3.pdf
《oracle_11.2.0.3升级11.2.0.4–单实例升级.pdf
《oracle_静默-单实例 11.2.0.4升级19.3.pdf
《CentOS_6.7系统一步一步 RAC 11.2.0.4升级19.3.pdf
《整理后_RAC_11.2.0.4升级19c.pdf
欢迎赞赏支持或留言指正