dbd oracle segfault with new version. Disconnect properly fix the issue
This commit is contained in:
parent
b1ca2e0795
commit
a7cf9e966f
|
@ -93,6 +93,7 @@ sub class_handle_ALRM {
|
||||||
sub handle_ALRM {
|
sub handle_ALRM {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
|
$self->disconnect();
|
||||||
$self->{output}->output_add(severity => $self->{sql_errors_exit},
|
$self->{output}->output_add(severity => $self->{sql_errors_exit},
|
||||||
short_msg => "Timeout");
|
short_msg => "Timeout");
|
||||||
$self->{output}->display();
|
$self->{output}->display();
|
||||||
|
@ -197,6 +198,12 @@ sub set_version {
|
||||||
$self->{version} = $self->{instance}->get_info(18); # SQL_DBMS_VER
|
$self->{version} = $self->{instance}->get_info(18); # SQL_DBMS_VER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub disconnect {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
$self->{instance}->disconnect if (defined($self->{instance}));
|
||||||
|
}
|
||||||
|
|
||||||
sub connect {
|
sub connect {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
my $dontquit = (defined($options{dontquit}) && $options{dontquit} == 1) ? 1 : 0;
|
my $dontquit = (defined($options{dontquit}) && $options{dontquit} == 1) ? 1 : 0;
|
||||||
|
@ -213,7 +220,7 @@ sub connect {
|
||||||
"DBI:". $self->{data_source},
|
"DBI:". $self->{data_source},
|
||||||
$self->{username},
|
$self->{username},
|
||||||
$self->{password},
|
$self->{password},
|
||||||
{ "RaiseError" => 0, "PrintError" => 0, "AutoCommit" => 1, %{$self->{connect_options_hash}} }
|
{ RaiseError => 0, PrintError => 0, AutoCommit => 1, %{$self->{connect_options_hash}} }
|
||||||
);
|
);
|
||||||
alarm(0) if (defined($self->{timeout}));
|
alarm(0) if (defined($self->{timeout}));
|
||||||
|
|
||||||
|
@ -267,6 +274,7 @@ sub query {
|
||||||
$self->{statement_handle} = $self->{instance}->prepare($options{query});
|
$self->{statement_handle} = $self->{instance}->prepare($options{query});
|
||||||
if (!defined($self->{statement_handle})) {
|
if (!defined($self->{statement_handle})) {
|
||||||
return 1 if ($continue_error == 1);
|
return 1 if ($continue_error == 1);
|
||||||
|
$self->disconnect();
|
||||||
$self->{output}->add_option_msg(short_msg => "Cannot execute query: " . $self->{instance}->errstr);
|
$self->{output}->add_option_msg(short_msg => "Cannot execute query: " . $self->{instance}->errstr);
|
||||||
$self->{output}->option_exit(exit_litteral => $self->{sql_errors_exit});
|
$self->{output}->option_exit(exit_litteral => $self->{sql_errors_exit});
|
||||||
}
|
}
|
||||||
|
@ -274,6 +282,7 @@ sub query {
|
||||||
my $rv = $self->{statement_handle}->execute;
|
my $rv = $self->{statement_handle}->execute;
|
||||||
if (!$rv) {
|
if (!$rv) {
|
||||||
return 1 if ($continue_error == 1);
|
return 1 if ($continue_error == 1);
|
||||||
|
$self->disconnect();
|
||||||
$self->{output}->add_option_msg(short_msg => "Cannot execute query: " . $self->{statement_handle}->errstr);
|
$self->{output}->add_option_msg(short_msg => "Cannot execute query: " . $self->{statement_handle}->errstr);
|
||||||
$self->{output}->option_exit(exit_litteral => $self->{sql_errors_exit});
|
$self->{output}->option_exit(exit_litteral => $self->{sql_errors_exit});
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,6 @@ sub get_id {
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub get_unique_id4save {
|
sub get_unique_id4save {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
@ -203,6 +202,8 @@ sub command_execution {
|
||||||
return ($exit_code, $stdout);
|
return ($exit_code, $stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub disconnect {}
|
||||||
|
|
||||||
# Connection initializer
|
# Connection initializer
|
||||||
sub connect {
|
sub connect {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
|
@ -245,6 +245,7 @@ sub manage_selection {
|
||||||
my $query = q{SELECT name, state, type, total_mb, usable_file_mb, offline_disks, FREE_MB FROM V$ASM_DISKGROUP};
|
my $query = q{SELECT name, state, type, total_mb, usable_file_mb, offline_disks, FREE_MB FROM V$ASM_DISKGROUP};
|
||||||
$options{sql}->query(query => $query);
|
$options{sql}->query(query => $query);
|
||||||
my $result = $options{sql}->fetchall_arrayref();
|
my $result = $options{sql}->fetchall_arrayref();
|
||||||
|
$options{sql}->disconnect();
|
||||||
|
|
||||||
$self->{dg} = {};
|
$self->{dg} = {};
|
||||||
foreach my $row (@$result) {
|
foreach my $row (@$result) {
|
||||||
|
@ -252,7 +253,7 @@ sub manage_selection {
|
||||||
|
|
||||||
if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' &&
|
if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' &&
|
||||||
$name !~ /$self->{option_results}->{filter_name}/) {
|
$name !~ /$self->{option_results}->{filter_name}/) {
|
||||||
$self->{output}->output_add(long_msg => "Skipping '" . $name . "': no matching filter name.", debug => 1);
|
$self->{output}->output_add(long_msg => "skipping '" . $name . "': no matching filter name.", debug => 1);
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,10 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +61,7 @@ sub run {
|
||||||
$self->{sql}->connect();
|
$self->{sql}->connect();
|
||||||
$self->{sql}->query(query => q{SELECT COUNT(*) FROM v$session WHERE type = 'USER'});
|
$self->{sql}->query(query => q{SELECT COUNT(*) FROM v$session WHERE type = 'USER'});
|
||||||
my $users = $self->{sql}->fetchrow_array();
|
my $users = $self->{sql}->fetchrow_array();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
my $exit_code = $self->{perfdata}->threshold_check(value => $users, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit_code = $self->{perfdata}->threshold_check(value => $users, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
$self->{output}->output_add(severity => $exit_code,
|
$self->{output}->output_add(severity => $exit_code,
|
||||||
|
|
|
@ -31,11 +31,10 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +61,7 @@ sub run {
|
||||||
$self->{sql}->connect();
|
$self->{sql}->connect();
|
||||||
$self->{sql}->query(query => q{SELECT COUNT(*) FROM v$database_block_corruption});
|
$self->{sql}->query(query => q{SELECT COUNT(*) FROM v$database_block_corruption});
|
||||||
my $corrupted_blocks = $self->{sql}->fetchrow_array();
|
my $corrupted_blocks = $self->{sql}->fetchrow_array();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
my $exit_code = $self->{perfdata}->threshold_check(value => $corrupted_blocks, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit_code = $self->{perfdata}->threshold_check(value => $corrupted_blocks, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
$self->{output}->output_add(severity => $exit_code,
|
$self->{output}->output_add(severity => $exit_code,
|
||||||
|
|
|
@ -86,6 +86,7 @@ sub manage_selection {
|
||||||
$options{sql}->connect();
|
$options{sql}->connect();
|
||||||
$options{sql}->query(query => $query);
|
$options{sql}->query(query => $query);
|
||||||
my @result = $options{sql}->fetchrow_array();
|
my @result = $options{sql}->fetchrow_array();
|
||||||
|
$options{sql}->disconnect();
|
||||||
|
|
||||||
$self->{global} = {
|
$self->{global} = {
|
||||||
physical_reads => $result[0],
|
physical_reads => $result[0],
|
||||||
|
|
|
@ -122,6 +122,7 @@ sub manage_selection {
|
||||||
$options{sql}->query(query => "SELECT file_name, tablespace_name, status FROM dba_data_files");
|
$options{sql}->query(query => "SELECT file_name, tablespace_name, status FROM dba_data_files");
|
||||||
}
|
}
|
||||||
my $result = $options{sql}->fetchall_arrayref();
|
my $result = $options{sql}->fetchall_arrayref();
|
||||||
|
$options{sql}->disconnect();
|
||||||
|
|
||||||
$self->{df} = {};
|
$self->{df} = {};
|
||||||
foreach my $row (@$result) {
|
foreach my $row (@$result) {
|
||||||
|
|
|
@ -185,6 +185,8 @@ sub manage_selection {
|
||||||
$self->event_count_and_details();
|
$self->event_count_and_details();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
if (scalar(keys %{$self->{event}}) <= 0) {
|
if (scalar(keys %{$self->{event}}) <= 0) {
|
||||||
$self->{output}->add_option_msg(short_msg => "No event found.");
|
$self->{output}->add_option_msg(short_msg => "No event found.");
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
|
|
|
@ -82,11 +82,10 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"filter-message:s" => { name => 'filter_message' },
|
||||||
"filter-message:s" => { name => 'filter_message' },
|
"retention-objects:s" => { name => 'retention_objects', default => 3 },
|
||||||
"retention-objects:s" => { name => 'retention_objects', default => 3},
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -162,6 +161,8 @@ sub manage_selection {
|
||||||
WHERE status <> 'VALID' AND status <> 'OPTION OFF'
|
WHERE status <> 'VALID' AND status <> 'OPTION OFF'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$options{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -58,6 +58,8 @@ SELECT name, state, type FROM V$ASM_DISKGROUP
|
||||||
type => $row->[2],
|
type => $row->[2],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
sub run {
|
sub run {
|
||||||
|
|
|
@ -75,13 +75,12 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning-status:s" => { name => 'warning_status', default => '' },
|
||||||
"warning-status:s" => { name => 'warning_status', default => '' },
|
"critical-status:s" => { name => 'critical_status', default => '' },
|
||||||
"critical-status:s" => { name => 'critical_status', default => '' },
|
"memory" => { name => 'memory' },
|
||||||
"memory" => { name => 'memory' },
|
"timezone:s" => { name => 'timezone' },
|
||||||
"timezone:s" => { name => 'timezone' },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
centreon::plugins::misc::mymodule_load(output => $self->{output}, module => 'DateTime',
|
centreon::plugins::misc::mymodule_load(output => $self->{output}, module => 'DateTime',
|
||||||
error_msg => "Cannot load module 'DateTime'.");
|
error_msg => "Cannot load module 'DateTime'.");
|
||||||
|
@ -164,6 +163,8 @@ sub manage_selection {
|
||||||
if (defined($self->{option_results}->{memory})) {
|
if (defined($self->{option_results}->{memory})) {
|
||||||
$self->{statefile_cache}->write(data => { last_time => $current_time });
|
$self->{statefile_cache}->write(data => { last_time => $current_time });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -133,6 +133,8 @@ sub manage_selection {
|
||||||
};
|
};
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -31,11 +31,10 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +61,7 @@ sub run {
|
||||||
$self->{sql}->connect();
|
$self->{sql}->connect();
|
||||||
$self->{sql}->query(query => q{SELECT current_utilization/limit_value*100 FROM v$resource_limit WHERE resource_name = 'processes'});
|
$self->{sql}->query(query => q{SELECT current_utilization/limit_value*100 FROM v$resource_limit WHERE resource_name = 'processes'});
|
||||||
my $session = $self->{sql}->fetchrow_array();
|
my $session = $self->{sql}->fetchrow_array();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
my $exit_code = $self->{perfdata}->threshold_check(value => $session, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit_code = $self->{perfdata}->threshold_check(value => $session, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
$self->{output}->output_add(severity => $exit_code,
|
$self->{output}->output_add(severity => $exit_code,
|
||||||
|
|
|
@ -32,13 +32,13 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"skip-no-backup" => { name => 'skip_no_backup', },
|
||||||
"skip-no-backup" => { name => 'skip_no_backup', },
|
"filter-type:s" => { name => 'filter_type', },
|
||||||
"filter-type:s" => { name => 'filter_type', },
|
"timezone:s" => { name => 'timezone', },
|
||||||
"timezone:s" => { name => 'timezone', },
|
"incremental-level" => { name => 'incremental_level', },
|
||||||
"incremental-level" => { name => 'incremental_level', },
|
});
|
||||||
});
|
|
||||||
foreach (('db incr', 'db full', 'archivelog', 'controlfile')) {
|
foreach (('db incr', 'db full', 'archivelog', 'controlfile')) {
|
||||||
my $label = $_;
|
my $label = $_;
|
||||||
$label =~ s/ /-/g;
|
$label =~ s/ /-/g;
|
||||||
|
@ -101,6 +101,7 @@ sub run {
|
||||||
}
|
}
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
my $result = $self->{sql}->fetchall_arrayref();
|
my $result = $self->{sql}->fetchall_arrayref();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
$self->{output}->output_add(severity => 'OK',
|
$self->{output}->output_add(severity => 'OK',
|
||||||
short_msg => sprintf("Rman backup age are ok."));
|
short_msg => sprintf("Rman backup age are ok."));
|
||||||
|
|
|
@ -31,12 +31,11 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
"retention:s" => { name => 'retention', default => 3 },
|
||||||
"retention:s" => { name => 'retention', default => 3},
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -65,6 +64,7 @@ sub run {
|
||||||
my $query = q{SELECT COUNT(*) FROM v$rman_status WHERE operation = 'BACKUP' AND status != 'COMPLETED' AND status != 'RUNNING' AND start_time > sysdate-} . $retention;
|
my $query = q{SELECT COUNT(*) FROM v$rman_status WHERE operation = 'BACKUP' AND status != 'COMPLETED' AND status != 'RUNNING' AND start_time > sysdate-} . $retention;
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
my $rman_backup_problems = $self->{sql}->fetchrow_array();
|
my $rman_backup_problems = $self->{sql}->fetchrow_array();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
my $exit_code = $self->{perfdata}->threshold_check(value => $rman_backup_problems, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit_code = $self->{perfdata}->threshold_check(value => $rman_backup_problems, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
$self->{output}->output_add(severity => $exit_code,
|
$self->{output}->output_add(severity => $exit_code,
|
||||||
|
|
|
@ -32,12 +32,11 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
"timezone:s" => { name => 'timezone', },
|
||||||
"timezone:s" => { name => 'timezone', },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -72,6 +71,7 @@ sub run {
|
||||||
};
|
};
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
my $result = $self->{sql}->fetchall_arrayref();
|
my $result = $self->{sql}->fetchall_arrayref();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
$self->{output}->output_add(severity => 'OK',
|
$self->{output}->output_add(severity => 'OK',
|
||||||
short_msg => sprintf("Backup online modes are ok."));
|
short_msg => sprintf("Backup online modes are ok."));
|
||||||
|
|
|
@ -110,9 +110,9 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
});
|
||||||
});
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,6 +160,7 @@ sub manage_selection {
|
||||||
|
|
||||||
$self->{cache_name} = "oracle_" . $self->{mode} . '_' . $self->{sql}->get_unique_id4save() . '_' .
|
$self->{cache_name} = "oracle_" . $self->{mode} . '_' . $self->{sql}->get_unique_id4save() . '_' .
|
||||||
(defined($self->{option_results}->{filter_counters}) ? md5_hex($self->{option_results}->{filter_counters}) : md5_hex('all'));
|
(defined($self->{option_results}->{filter_counters}) ? md5_hex($self->{option_results}->{filter_counters}) : md5_hex('all'));
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -31,11 +31,10 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
"warning:s" => { name => 'warning', },
|
||||||
"warning:s" => { name => 'warning', },
|
"critical:s" => { name => 'critical', },
|
||||||
"critical:s" => { name => 'critical', },
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +61,7 @@ sub run {
|
||||||
$self->{sql}->connect();
|
$self->{sql}->connect();
|
||||||
$self->{sql}->query(query => q{SELECT current_utilization/limit_value*100 FROM v$resource_limit WHERE resource_name = 'sessions'});
|
$self->{sql}->query(query => q{SELECT current_utilization/limit_value*100 FROM v$resource_limit WHERE resource_name = 'sessions'});
|
||||||
my $session = $self->{sql}->fetchrow_array();
|
my $session = $self->{sql}->fetchrow_array();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
my $exit_code = $self->{perfdata}->threshold_check(value => $session, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit_code = $self->{perfdata}->threshold_check(value => $session, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
$self->{output}->output_add(severity => $exit_code,
|
$self->{output}->output_add(severity => $exit_code,
|
||||||
|
|
|
@ -348,6 +348,7 @@ sub manage_selection {
|
||||||
}
|
}
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
my $result = $self->{sql}->fetchall_arrayref();
|
my $result = $self->{sql}->fetchall_arrayref();
|
||||||
|
$self->{sql}->disconnect();
|
||||||
|
|
||||||
$self->{tablespace} = {};
|
$self->{tablespace} = {};
|
||||||
|
|
||||||
|
|
|
@ -42,11 +42,13 @@ sub custom_usage_perfdata {
|
||||||
$total_options{cast_int} = 1;
|
$total_options{cast_int} = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{output}->perfdata_add(label => $label,
|
$self->{output}->perfdata_add(
|
||||||
value => $value_perf, unit => 'B',
|
label => $label,
|
||||||
warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{label}, %total_options),
|
value => $value_perf, unit => 'B',
|
||||||
critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{label}, %total_options),
|
warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{label}, %total_options),
|
||||||
min => 0, max => $self->{result_values}->{total});
|
critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{label}, %total_options),
|
||||||
|
min => 0, max => $self->{result_values}->{total}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub custom_usage_threshold {
|
sub custom_usage_threshold {
|
||||||
|
@ -159,6 +161,8 @@ sub manage_selection {
|
||||||
while (my $result = $self->{sql}->fetchrow_hashref()) {
|
while (my $result = $self->{sql}->fetchrow_hashref()) {
|
||||||
$self->{tmptablespace}->{$result->{TABLESPACE}} = { used => $result->{B_USED}, total => $result->{B_TOTAL}, display => lc $result->{TABLESPACE} };
|
$self->{tmptablespace}->{$result->{TABLESPACE}} = { used => $result->{B_USED}, total => $result->{B_TOTAL}, display => lc $result->{TABLESPACE} };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -71,6 +71,7 @@ sub run {
|
||||||
short_msg => sprintf("Connection established to listener '%s'.", $sid));
|
short_msg => sprintf("Connection established to listener '%s'.", $sid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
$self->{output}->display();
|
$self->{output}->display();
|
||||||
$self->{output}->exit();
|
$self->{output}->exit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,8 @@ group by a.tablespace_name
|
||||||
while (my $result = $self->{sql}->fetchrow_hashref()) {
|
while (my $result = $self->{sql}->fetchrow_hashref()) {
|
||||||
$self->{undotablespace}->{$result->{TABLESPACE_NAME}} = { used => $result->{USED_BYTES}, total => $result->{TOTAL_BYTES}, display => lc $result->{TABLESPACE_NAME} };
|
$self->{undotablespace}->{$result->{TABLESPACE_NAME}} = { used => $result->{USED_BYTES}, total => $result->{TOTAL_BYTES}, display => lc $result->{TABLESPACE_NAME} };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{sql}->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -269,6 +269,8 @@ exit;";
|
||||||
return ($exit_code, $stdout);
|
return ($exit_code, $stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub disconnect {}
|
||||||
|
|
||||||
# Connection initializer
|
# Connection initializer
|
||||||
sub connect {
|
sub connect {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
|
@ -170,7 +170,6 @@ sub get_id {
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub get_unique_id4save {
|
sub get_unique_id4save {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
@ -209,6 +208,8 @@ sub command_execution {
|
||||||
return ($exit_code, $stdout);
|
return ($exit_code, $stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub disconnect {}
|
||||||
|
|
||||||
# Connection initializer
|
# Connection initializer
|
||||||
sub connect {
|
sub connect {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
Loading…
Reference in New Issue