zabbix3.0.2 监控oracle高可用dataguard的standby库状态详细过程

原创 2016年05月28日 00:38:37

 


1,判断standby复制实时的标准

判断标准是,通过sqlplus执行select sequence#,applied from v$archived_log order by sequence#;如果全是YES则表明standby库已经实时复制了,primary和standby数据一致了没有延迟,否则就是有延迟的。如下所示:

SQL> select sequence#,applied from v$archived_log order by sequence#;                                                                      

 

 SEQUENCE# APPLIED

---------- ---------

      5118 YES

      5119 YES

      5120 YES

      5121 YES

      5122 YES

      5123 YES

      5124 YES

      5125 YES

      5126 YES

      5127 YES

      5128 YES

 

 SEQUENCE# APPLIED

---------- ---------

      5129 YES

 

419 rows selected.

 

SQL>

 

所以通过进入oracle帐号,登录sqlplus控制台执行selectsequence#,applied from v$archived_log order by sequence#;来判断,将获取的查询结果集列出来,如果都是YES表明standby复制正常,反之则有问题,编写判断脚本如下:

 

脚本一get_dg.sh,获取standby状态,将所有的YES记录放在当前的文件bst.csv下面:

#!/bin/bash

su - oracle -c "

 

cd /oracle/backup/data

sqlplus -S zabbix/ys_zb_0418@PD2 << EOF

set heading off

set feedback off

set pagesize 0

set verify off

set echo off

spool bts.csv 

select sequence#,applied from $1 order by sequence#;                                                           

spool off

exit

EOF

 

脚本二check_dg.sh,取出YES的num数量,取出standy所有的记录数,如果两个数字相等,则证明standby复制正常,否则复制不正常,则报警出来,check_dg.sh脚本如下:

#!/bin/bash

#> /oracle/backup/data/bts.csv

/bin/sh /oracle/backup/data/get_dg.sh $1 > /dev/null

 

 

cd /oracle/backup/data

result_num=`cat bts.csv |wc |awk '{print $1}'`

yes_num=`cat bts.csv |grep YES |wc |awk '{print $1}'`

in_memory_num=`cat bts.csv |grep IN-MEMORY  |wc |awk '{print $1}'`                                                             

out_num=0;

standby_num=`expr $yes_num + $in_memory_num + $out_num`

if [ "$result_num" -eq 0 ]

then

         echo 0

elif [ "$result_num" -eq 1 ]

then

        echo 0

elif [ "$result_num" -eq "$standby_num" ]

then

         echo 1

else echo 0

fi

 


2Zabbix-agentd配置文件添加参数

vim /usr/local/zabbix/conf/zabbix_agentd.conf

UnsafeUserParameters=1

UserParameter=oracle.standby_status,/oracle/backup/data/check_dg.sh 'v$archived_log'                                         

 

添加完后,重启zabbix_agentd

 

 

3,使用普通的root帐号调用sqlplus脚本报错

在oracle服务器可以正常调用:

[root@pldb02 data]# sh check_dg.sh'v$archived_log'

1

[root@pldb02 data]#

但是在zabbix-server上调用出错:

[root@zabbix_serv_121_12 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.3.13 -p10050 -k"oracle.standby_status"

standard in must be a tty

1

[root@zabbix_serv_121_12 ~]#

 


4,改用zabbix帐号来调用check_dg.sh

4.1在脚本里面添加oracle环境变量

需要在脚本里面配置一些oracle的环境变量,这样可以利用当前的zabbix帐号来运行sqlplus命令,get_dg.sh如下:

[root@pldb02 data]# more get_dg.sh

#!/bin/bash

export NLS_LANG=american_america.ZHS16GBK

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1                                                                                       

export ORACLE_SID=powerdesdg2

export PATH=$ORACLE_HOME/bin:$PATH

 

cd /oracle/backup/data

sqlplus -S zabbix/ys_zb_0418@PD2 << EOF

set heading off

set feedback off

set pagesize 0

set verify off

set echo off

spool bts.csv 

select sequence#,applied from $1 order by sequence#;

spool off

exit

EOF

 

[root@pldb02 data]#

 

 

脚本2check_dg.sh基本没有变动,如下所示:

[root@pldb02 data]# more check_dg.sh

#!/bin/bash

#> /oracle/backup/data/bts.csv

/bin/sh /oracle/backup/data/get_dg.sh $1 > /dev/null

 

 

cd /oracle/backup/data

result_num=`cat bts.csv |wc |awk '{print $1}'`

yes_num=`cat bts.csv |grep YES |wc |awk '{print $1}'`

in_memory_num=`cat bts.csv |grep IN-MEMORY  |wc |awk '{print $1}'`

out_num=0;

standby_num=`expr $yes_num + $in_memory_num + $out_num`

if [ "$result_num" -eq 0 ]

then

         echo 0

elif [ "$result_num" -eq 1 ]

then

        echo 0

elif [ "$result_num" -eq "$standby_num" ]

then

         echo 1

else echo 0

fi

[root@pldb02 data]#

 

 

4.2zabbix加入oracle用户组

    gpasswd -a zabbix oinstall            

    gpasswd -a zabbix dba

    gpasswd -a zabbix oracle

 

 

4.3zabbix-server服务器上检查standby成功

在zabbix-server的服务器上,远程调用oracle的standby上的状态监控,看到能获取到实际的值1:

[root@zabbix_serv_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.3.13 -p10050 -k "oracle.standby_status"

1

[root@zabbix_serv_121_12 ~]#

 

 


5,在zabbix管理界面添加standby


建立oracle模版22.png:

 

在standby的主机上添加模版E:\u\azure_cloud\pd\024.png:

 

Actions里面添加触发条件的模版,这样当standby模版的条件满足后就会触发这个actions事件来发报警短信邮件或者打电话等等,E:\u\windows\pic\21.png:

 

至此,在zabbix上通过自己写的shell脚本来监控oracle的高可用的standby库复制状态已经完成了。

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

dg配置及维护命令

dg 配置: standby log : alter database add standby logfile group 4('/u01/app/oracle/oradata/r5/std04....

DataGuard的监控与管理

这里简单记录一下对DATAGUARD的监控与管理,具体内容参考官方文档。 1. 以下命令用于在屋里备用数据库上启用实时应用功能。在备用站点上发出命令: SQL> ALTER DATABASE RE...

zabbix通过orabbix和自定义脚本监控oracle数据库

zabbix通过orabbix和自定义脚本监控oracle数据库 原文地址http://www.iyunv.com/thread-94249-1-1.html 由于公司要上oracle数据库,...

ORACLE 11G 中采用rman备份异机恢复数据库详细过程

场景:        有一个生产库的用户下面所有的表都不见了,怀疑人为被删除了,现在需要用备份去恢复下,找出原来的表,线上是oracle dataguard环境,有全库备份文件,准备去测试库恢复一下。...
  • mchdba
  • mchdba
  • 2015-02-03 16:29
  • 6409

ORACLE11G RMAN备份恢复到异机数据库

orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y ...

oracle11g dataguard中standby库文件坏块的修复过程

问题描述: 机房断电了,所以primary和standby库都是直接断电,然后我都设置了开机自启动oracle,所以第二天我来看的时候,primary和standby都启动了,归档日志也传输到stan...
  • mchdba
  • mchdba
  • 2015-10-19 21:01
  • 3006
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)