Build precise queries to find exactly what you need
Press ESC to close
Join our next live webinar: “Advanced Nagios Monitoring Techniques” – Register Now
@dbunduki
Favorites0
Views
Projects0
#!/usr/bin/perl -w my $host = $ARGV[0]; my $port = $ARGV[1]; my $sid = $ARGV[2]; my $user = $ARGV[3]; my $pass = $ARGV[4]; ### point this to your sqlplus binary my $sqlplus = "/usr/local/src/instantclient_11_2/sqlplus"; ### point this to your sqlplus directory $ENV{"LD_LIBRARY_PATH"} = "/usr/local/src/instantclient_11_2/"; sub trim($); my @result; my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2); my @param_array = ( [90,">","Dictionary Cache Hit Ratio",'SELECT (1 - (Sum(getmisses)/(Sum(gets) + Sum(getmisses)))) * 100 FROM v$rowcache;'], [99,">","Library Cache Hit Ratio",'SELECT (1 -(Sum(reloads)/(Sum(pins) + Sum(reloads)))) * 100 FROM v$librarycache;'], [89,">","DB Block Buffer Cache Hit Ratio",'SELECT (1 - (phys.value / (db.value + cons.value))) * 100 FROM v$sysstat phys,v$sysstat db,v$sysstat cons WHERE phys.name = 'physical reads' AND db.name = 'db block gets' AND cons.name = 'consistent gets';'], [98,">","Latch Hit Ratio",'SELECT (1 - (Sum(misses) / Sum(gets))) * 100 FROM v$latch;'], [5,")))" |"); while ( my $res = ) { if ($res =~ /^(ORA-d{5})/) { return $1; } } } if (logon() eq "ORA-01017" ){ for (my $i=0; $iumformat 999.999 $param_array[$i][3] exit EOF |") or die; while ( my $res = ) { #print trim($res)."n"; if ( $res =~/^s*S+/ ) { push(@results,trim($res)); } } } for (my $i=0; $is OK"; exit $ERRORS{"OK"}; } else { print "Unable to connect to $sid database!"; exit $ERRORS{"CRITICAL"}; }
Reviewed 14 years ago