联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
一直在思索怎么去监控dg比较方便,又能够做到比较适用.想到了几种方法:
1.使用主备库两边的alert日志,但是这样的方法需要配置ssh,用来一个节点获取另外一个节点的alert日志
2.通过查询v$archived_log或者其他相关视图,然后主备库进行比较,但是这个需要访问另外一个库,需要另外库的登录信息
3.通过查询备库的v$archived_log视图,粗略评估dg是否工作正常.
这里我选择了3,dg的监控大部分时候是为了让人及时的发现日志应用异常,然后人工干预处理,从而减少修改gap或者重建dg的概率.而这个额监控可以在很大程度上发现dg应用归档日志异常,从而确定dg是否工作正常,如果发现工作异常,及时处理,可以减少很多工作量,甚至拯救你的数据.
#!/bin/bash source ~/.bash_profile #check time(M) export CHECK_M=120 export RESULT_FILE=/tmp/dg_switch_check.log $ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <<XFF>/tmp/check_dg.log set pagesize 0 feedback off verify off heading off echo off select ceil((sysdate-next_time)*24*60) "M" from v\$archived_log where applied='YES' AND SEQUENCE#=(SELECT MAX(SEQUENCE#) FROM V\$ARCHIVED_LOG WHERE applied='YES'); exit; XFF GET_M=`cat /tmp/check_dg.log` rm /tmp/check_dg.log if [ ${CHECK_M} -lt ${GET_M} ]; then echo "check dataguard time:`date`">$RESULT_FILE echo "The last time application archivelog happened in $GET_M minutes ago">>$RESULT_FILE else echo ''>$RESULT_FILE fi
针对这样的脚本,根据你的dg归档切换的频率,设置监控dg的最近一次日志应用与当前时间差,然后判断dg是否工作正常.根据监控程序的特点,可以通过判断结果集文件,然后邮件/短信或者其他方式处理.
来膜拜大神的脚本
脚本里提到的XFF是什么命令?