dategurd oracle_ORACLE DATAGUARD 监控脚本

博客展示了使用Perl监控Oracle Data Guard的脚本。脚本通过DBI模块连接Oracle数据库,分别查询主库和备库的归档日志最大序列号,对比两者差值,根据结果使用zabbix_sender向Zabbix服务器发送状态信息,实现对Oracle Data Guard的监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用perl来监控ORACLE DATAGUARD脚本#!/usr/bin/perl

use strict;

use warnings;

use DBI;    # Load the DBI module

my $ZabbixServer = "192.168.3.24";

my $ZabbixPort   = "10051";

my $HOSTNAME     = "ora2";

my $SenderCMD="/usr/local/zabbix/bin/zabbix_sender";

my $Primtns = "test_st";

my $Stantns = "test";

my $KEY          = "Oracled.DG.Status";

my $KEYContent1          = "OK";

my $KEYContent2          = "Failed";

my $LogVal               = 3;

my $user   = "zabbix";

my $passwd = "zabbix";

my $Primseq = 0;

my $Stanseq = 0;

$ENV{"ORACLE_HOME"}='/oracle/product/11.2.0/db_1';

#$ENV{PATH} .= $ENV{PATH} . ':/oracle/product/11.2.0/db_1/bin';

### Perform the connection using the Oracle driver

my $dbh =

DBI->connect( "dbi:Oracle:$Primtns", "$user", "$passwd", { PrintError => 0 } )

or die "Can't connect to Oracle database: $DBI::errstr\n";

my $sth = $dbh->prepare(

"SELECT MAX(SEQUENCE#) MAXSEQ

FROM V\$ARCHIVED_LOG

WHERE RESETLOGS_ID=(

SELECT   RESETLOGS_ID  FROM V\$DATABASE_INCARNATION

WHERE STATUS='CURRENT') "

);

$sth->execute;

###

while ( my @recs = $sth->fetchrow_array ) {

$Primseq = $recs[0];

###

}

### Now, disconnect from the database

$dbh->disconnect

or warn "Disconnection failed: $DBI::errstr\n";

$dbh =

DBI->connect( "dbi:Oracle:$Stantns", "$user", "$passwd", { PrintError => 0 } )

or die "Can't connect to Oracle database: $DBI::errstr\n";

$sth = $dbh->prepare(

"SELECT MAX(SEQUENCE#) MAXSEQ

FROM V\$ARCHIVED_LOG

WHERE RESETLOGS_ID=(

SELECT   RESETLOGS_ID  FROM V\$DATABASE_INCARNATION

WHERE STATUS='CURRENT'

AND APPLIED='YES') "

);

$sth->execute;

###

while ( my @recs = $sth->fetchrow_array ) {

$Stanseq = $recs[0];

###

}

### Now, disconnect from the database

$dbh->disconnect

or warn "Disconnection failed: $DBI::errstr\n";

if($Primseq-$Stanseq>=$LogVal){

system("$SenderCMD -z $ZabbixServer -p $ZabbixPort -s $HOSTNAME -k $KEY -o $KEYContent2 >/dev/null 2>&1");

}else{

system("$SenderCMD -z $ZabbixServer -p $ZabbixPort -s $HOSTNAME -k $KEY -o $KEYContent1 >/dev/null 2>&1");

}

exit;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值