Hi Karl

I finally uncovered the issue here.

Seems you are right is is a bug of sorts.

Looks like I was dropping the environment handle when I should of been keeping it in the situation where it is just a login issue.

You will find the corrected code here

http://svn.perl.org/modules/dbd-oracle/trunk

Sorry if this caused you any problems.

Seems I have been spending too much time with an odd problem with Instant client 11 and 11g which was sort of the same.

Cheers
John Scoles



Karl Forner wrote:
On Thu, Feb 19, 2009 at 2:08 PM, <sco...@pythian.com> wrote:

oracle instant client 11.1
I wonder if they have changed how 11.1 works?? wil have to look at that

what was the ORacle version working with 1.16?



9.2.0





But it seems to work now using the 'ora_envhp => 0' attribute. Is there
some
penalty performance when using this option ?

Not in terms of speed it does use a little more resources so it is not
something you want to use on a mass scale say on a large web server or
alike.


On Thu, Feb 19, 2009 at 1:56 PM, <sco...@pythian.com> wrote:

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.






Reply via email to