#!/usr/bin/perl
use strict;
use warnings;
use lib "/home/jfroebe/lib";
use DBI;
use File::Basename;
our $SYBDBA1_login = 'login';
our $SYBDBA1_password = 'password';
our $dbh = connect_dbms();
sub report_err {
my $msg = shift;
my $type = shift;
if ($type eq 'error') {
print "ERROR: $msg\n";
} else {
print "MSG: $msg\n";
}
}
sub exit_on_error {
my $msg = shift;
report_err($msg, "error");
return -1;
}
sub connect_dbms {
my $loc_dbh;
my $script = basename($0);
if ($loc_dbh = DBI->connect("dbi:Sybase:server=SISDBA1;loginTimeout=1
+0;timeout=30;scriptName=$script;encryptPassword=1;tdsLevel=CS_TDS_50;
+charset=iso_1", $SYBDBA1_login, $SYBDBA1_password, { PrintError => 0,
+ RaiseError => 1 } )) {
return $loc_dbh;
}
report_err("unable to connect to SISDBA1", "error");
return;
}
sub syb_loop {
my $query = "exec sp_helpdb";
RETRY: for (my $i = 0; $i < 10000; $i++) {
my $array_ref;
eval {
$array_ref = $dbh->selectall_arrayref($query);
};
if ($@) {
if ($dbh->err == 151 || $dbh->err == 60) {
report_err("Connection to DBMS died", "error");
undef($dbh);
for (my $i = 0; $i < 10; $i++) {
if( $dbh = connect_dbms() ) {
report_err("Reconnected", "msg");
redo RETRY;
}
sleep 3;
}
exit_on_error("Unable to reconnect after $i attempts!");
}
}
}
}
syb_loop();
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|