ORACLE DATAGUARD monitoring script
Use perl to monitor ORACLE DATAGUARD scripts
#! / 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 = 3X my $user = "zabbix"; my $passwd = "zabbix"; my $Primseq = 0 X my $Stanseq = 0 X 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