What is the version of the Oracle client you are using? There is a rather large gap between 1.16 and 1.22 on the way they connect especially with the older Oracle clients which could explain his
cheers John Scoles > On Thu, Feb 19, 2009 at 12:33 PM, Martin Evans > <martin.ev...@easysoft.com>wrote: > >> Karl Forner wrote: >> >>> I'm experiencing a very strange problem : in short, I could not >>> reconnect >>> to a DB using DBI once I successfully connected then failed (with bad >>> password for example), IN THAT ORDER. >>> >>> I made a script reproducing the bug: >>> ================= >>> #!/usr/bin/env perl >>> use strict; >>> use warnings; >>> use DBI; >>> >>> my $dsn = 'dbi:Oracle:sid=TITI;host=xxx.yyy.zzz.com;port=1521'; >>> my $user = 'toto'; >>> my $password = $user; >>> my $options = { AutoCommit => 0 }; >>> my @goodinfo = ($dsn, $user, $password, $options); >>> my @badinfo = ($dsn, $user, '', $options); >>> >>> test(@goodinfo); >>> test(@badinfo); >>> test(@goodinfo); >>> test(@goodinfo); >>> >>> sub test { >>> my $dbh; >>> eval { $dbh = DBI->connect(@_) }; >>> warn "$...@\n" if $@; >>> print $dbh ? "Ok" : "NOK"; >>> print "\n"; >>> } >>> >>> ======== >>> >>> so I expect to get "OK NOK OK OK". >>> But on one computer I get "OK NOK NOK NOK", and on another I get the >>> expected stuff (using the same database) >>> >>> But if I do >>> test(@badinfo); >>> test(@goodinfo); >>> test(@goodinfo); >>> >>> I get "NOK OK OK" on both !!!!!!! >>> >>> Is this a bug ?? >>> >>> Thanks >>> Karl Forner >>> >>> P.S >>> >>> Here are the configs : >>> >>> working computer: >>> arch: ia64 >>> OS: Suse ES 9 >>> perl -v : v5.8.6 >>> DBI: 1.607 >>> DBD::Oracle: 1.16 >>> >>> buggy computer: >>> arch: i686 >>> OS : ubuntu 8.04 >>> perl -v : v5.8.8 >>> DBI: 1.601 >>> DBD::Oracle: 1.22 >>> >>> >> I think if you add add "ora_envhp => 0" to your options it will work. >> See the DBD::Oracle pod for an explanation. >> > > Indeed it works, thnak you. > I think this is something quite dangerous and difficult to solve, maybe it > should be a default or clearly explained in the synopsis. > Typical use case it testing a list of login/password. Here the connection > begins to fail as soon as there is a success followed by a failure, then > all > subsequent connections fail. > Moreover it does not happen with previous version of DBD::Oracle. > > Thanks again for the answer. >