Hi,
I would like to connect to an Oracle database as sysdba from perl, so I use the script
joined below.
I use, for example :
perl test.pl -database prebcc -username "t" -password "t" -sysdba
But the sysdba parameter is not taken into account. If user t exists with password t
the connection is made as t (should be as sysdba) if it doens not exists I have the
"invalid username/password; logon denied" error.
Yet this program is working on Unix. So can anybody help me?
#!/usr/local/bin/perl
# template for DBI programs
# use warnings;
use DBI;
use strict;
use Getopt::Long;
my %optctl = ();
Getopt::Long::GetOptions(
\%optctl,
"database=s",
"username=s",
"password=s",
"sysdba!",
"sysoper!",
"z","h","help");
my($db, $username, $password, $connectionMode);
$connectionMode = 0;
if ( $optctl{sysoper} ) { $connectionMode = 4 }
if ( $optctl{sysdba} ) { $connectionMode = 2 }
if ( ! defined($optctl{database}) ) {
Usage();
die "database required\n";
}
$db=$optctl{database};
if ( ! defined($optctl{username}) ) {
Usage();
die "username required\n";
}
$username=$optctl{username};
$password = $optctl{password};
print "USERNAME: $username\n";
print "DATABASE: $db\n";
print "PASSWORD: $password\n";
print "connect: $connectionMode\n";
#exit;
my $dbh = DBI->connect(
'dbi:Oracle:' . $db,
$username, $password,
{
ora_session_mode => $connectionMode
}
);
die "Connect to $db failed \n" unless $dbh;
$dbh->{RowCacheSize} = 100;
my $sql=q{select USER from dual};
my $sth = $dbh->prepare($sql,{ora_check_sql => 0 });
$sth->execute;
while( my $ary = $sth->fetchrow_arrayref ) {
print "\t\t$${ary[0]}\n";
}
$sth->finish;
$dbh->disconnect;
sub Usage {
print "\n";
print "usage: DBI_template.pl\n";
print " DBI_template.pl -database dv07 -username scott -password tiger [-sysdba
|| -sysoper]\n";
print "\n";
}
Pierre HENON
HSBC-CCF
Banque de Grande Client�le
103, Avenue des Champs-Elys�es
75008 PARIS
FRANCE
Tel : + 33 (0) 1 40 70 73 16
Fax : + 33 (0) 1 40 70 70 65
Les informations contenues dans ce message sont confidentielles et peuvent constituer
des informations privilegiees. Si vous n etes pas le destinataire de ce message, il
vous est interdit de le copier, de le faire suivre, de le divulguer ou d en utiliser
tout ou partie. Si vous avez recu ce message par erreur, merci de le supprimer de
votre systeme, ainsi que toutes ses copies, et d en avertir immediatement l expediteur
par message de retour.
Il est impossible de garantir que les communications par messagerie electronique
arrivent en temps utile, sont securisees ou denuees de toute erreur ou virus. En
consequence, l expediteur n accepte aucune responsabilite du fait des erreurs ou
omissions qui pourraient en resulter.
--- ----------------------------------------------------- ---
The information contained in this e-mail is confidential. It may also be legally
privileged. If you are not the addressee you may not copy, forward, disclose or use
any part of it. If you have received this message in error, please delete it and all
copies from your system and notify the sender immediately by return e-mail.
E-mail communications cannot be guaranteed to be timely secure, error or virus-free.
The sender does not accept liability for any errors or omissions which arise as a
result.
$!2$!