-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdg_observer_monitor.pl
More file actions
53 lines (43 loc) · 1.21 KB
/
Copy pathdg_observer_monitor.pl
File metadata and controls
53 lines (43 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl -w
###############################################
# Check status of Data Guard Observer using #
# v$database. #
###############################################
use strict;
use warnings;
use DBI;
use FileHandle;
use DBD::Oracle qw(:ora_session_modes);
use File::Basename;
use Mail::Sender;
use lib $ENV{WORKING_DIR};
require $ENV{MY_LIBRARY};
my $db_name = uc $ENV{ORACLE_SID};
my $server_name = uc $ENV{ORACLE_HOST_NAME};
my $mail_body;
my $dbh = Connect2Oracle ($db_name);
my $sql01 = qq
{
select FS_FAILOVER_STATUS, FS_FAILOVER_OBSERVER_PRESENT
from v\$database
};
my $result_array_ref = $dbh->selectall_arrayref($sql01);
if ($DBI::err)
{
print "Fetch failed for $sql01 $DBI::errstr\n";
$dbh->disconnect;
exit 1;
}
my $status = $result_array_ref->[0][0];
my $observer = $result_array_ref->[0][1];
my $message = "Database $db_name on server $server_name.\nFast Failover Status: $status\nObserver: $observer";
if (($observer ne 'YES') or ($status ne 'TARGET UNDER LAG LIMIT'))
{
my $subject = "Warning from Fast Failover Observer on $server_name.";
SendAlert ( $server_name, $db_name, $subject, $message );
}
else
{
print "$message\n";
}
exit;