標籤:oracle dataguard
使用perl來監控ORACLE DATAGUARD指令碼
#!/usr/bin/perluse strict;use warnings;use DBI; # Load the DBI modulemy $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 drivermy $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;
本文出自 “與IT一起的日子” 部落格,請務必保留此出處http://raugher.blog.51cto.com/3472678/1551506
ORACLE DATAGUARD 監控指令碼