使用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;
时间: 2024-10-14 08:28:58