I tried your proposition, then I tried the following:
my $dbh = DBI->connect(
'DBI:Oracle:host=myserver.rms.slb.com;sid=INDICATORS;port=1526',
'indic/xxx', '',
{ AutoCommit => 0, RaiseError => 0, PrintError => 1 } )
or die $DBI::errstr;
and now I get a new error:
DBI->connect failed: ORA-12157: TNS:internal network communication error
(DBD: l
ogin failed) at /disc1/sherpa_a/indicators2/perl/toto.pl line 5
[Thu Mar 30 09:31:16 2000] [error] ORA-12157: TNS:internal network
communication
error (DBD: login failed) at /disc1/sherpa_a/indicators2/perl/toto.pl line 5.
Any idea with this new error code which is ? Here is the Oracle error
description:
Should I post this error in the DBI mailing list ?
ORA-12157 TNS:Internal network communication error
Cause:
Internal error during network communication.
Action:
Not normally visible to the user. For further details, turn on
tracing and reexecute the operation. If error persists, contact Worldwide
Customer Support.
At 04:28 PM 29-03-00 -0500, David S . Kenzik wrote:
>A final effort... From the command line it works. Perhaps your ORACLE_USERID,
>etc. is already set?
>
>Within your Registry script, that's probably not the case unless you've
>explicitly told it otherwise.
>
>So let's change your DSN around a bit:
>
> my $dbh = DBI->connect('dbi:Oracle:', 'indic/xxx@INDICATORS', '',
> { AutoCommit => 0, RaiseError => 0, PrintError => 1 } ) or die
> $DBI::errstr;
>
>I don't use the same format of the connect string that you are showing in
>your example below (I use the format above.) In fact, I vaguely remember
>encountering a similar problem when using a 'typical' connect string with
>other DB's.
>
>I'm hoping that something in your current environment is set allowing that
>format to work, when in actuality it's the improper way.
>
>Let's see if this works. If not, I'm out of ideas. :-(
>
>Good luck!
>
>-d.
>
> David S . Kenzik said...
>
> > My mistake, Jerome.
> >
> > PerlSetVar != PerlSetEnv
> >
> > I read that as PerlSetVar. Sorry to confuse the issue.
> >
> > I hope it's a simple permissions problem.
> >
> > Good luck!
> >
> > David S . Kenzik said...
> >
> > > Jerome MOUREAUX said...
> > >
> > > > David,
> > > >
> > > > The ORACLE_HOME is set in the httpd.conf with a PerlSetEnv
> directive.
> > > > (it appears in the extract I sent). (I've checked that is OK in
> the scripts by
> > > > printing out $ENV{ORACLE_HOME} )
> > >
> > > Well I can pretty much guarantee you that the ORACLE_HOME
> environment is not
> > > being set by PerlSetVar. That is simply not the function of
> PerlSetVar.
> > >
> > > You must have it set globally in /etc/profile or similar if you're
> able to
> > > print it. And if you are indeed able to print it, then it not being
> set is
> > > not your problem.
> > >
> > > Just to humour me, please set it in your startup.pl like my example
> shows,
> > > and remove the PerlSetVar line in your httpd.conf. Try again. If
> the problem
> > > persists, it's something else. Maybe permissions...
> > >
> > > Does the webserver user have rights to look at tnsnames.ora and other
> > > items inside /disc1/sherpa/oracle? To verify, su into your
> webserver user
> > > and attempt to run your script from the command line.
> > >
> > > > The SID is not case sensitive (I tried some combination when I
> was trying to
> > > > figure out what happen) otherwise it would mean that SID are
> insensitive when
> > > > running the script from command line and sensitive when running
> from Apache !
> > >
> > > OK. It's not case sensitive. I've learned something new today, and
> verified
> > > by reconfiguring my tnsnames.ora.
> > >
> > > Good luck.
> > >
> > > > At 03:43 PM 29-03-00 -0500, David S . Kenzik wrote:
> > > >
> > > > >The ORACLE_HOME ___environment___ variable is set where? I see
> no indication
> > > > >of it being set in any of your examples or config.
> > > > >
> > > > >I do see PerlSetVar setting it-- don't confuse that with the
> environment!
> > > > >PerlSetVar is a specific way to set variables so mod_perl can
> read them via
> > > > >the dir_config() method.
> > > > >
> > > > >I usually set my ORACLE_HOME inside my startup.pl so all the
> Apache children
> > > > >can definitely find it:
> > > > >
> > > > > $ENV{ORACLE_HOME}='/disc1/sherpa/oracle';
> > > > >
> > > > >You might also be able to use Apache's SetEnv directive, see
> the following
> > > > >URL for details and possible restrictions:
> > > > >
> > > > > http://www.apache.org/docs/mod/mod_env.html#setenv
> > > > >
> > > > >And finally, you should double check your case in your DSN
> during your
> > > > >connect(). Oracle SIDs might be case sensitive and thus not
> finding the
> > > > >proper SID. (I always have SIDs that are all capital letters,
> so I couldn't
> > > > >tell you for sure.)
> > > > >
> > > > >Hope this helps.
> > > > >
> > > > >-d.
> > > > >
> > > > > Jerome MOUREAUX said...
> > > > >
> > > > > > Hi All,
> > > > > >
> > > > > > I experience a trouble with Perl script using DBI running
> under Mod_perl
> > > > > > and Registry
> > > > > > If you have an idea from where the problem may come....
> > > > > >
> > > > > > Here is the error :
> > > > > >
> > > > > > DBI->connect failed: ORA-12154: TNS:could not resolve
> service name (DBD:
> > > > > > login f
> > > > > > ailed) at /disc1/sherpa_a/indicators2/perl/activity/toto.pl
> line 5
> > > > > > [Wed Mar 29 20:11:32 2000] [error] ORA-12154: TNS:could not
> resolve
> > > > > service
> > > > > > name
> > > > > > (DBD: login failed) at
> > > > > /disc1/sherpa_a/indicators2/perl/activity/toto.pl
> > > > > > line 5
> > > > > >
> > > > > > The ORACLE_HOME is well set ! I first tried to use
> Apache::DBI but i get
> > > > > > this error
> > > > > > so I go back to DBI only but it's exactly the same error.
> > > > > > My scripts run well if I launch it from the command line.
> > > > > >
> > > > > > Here is extracts of my httpd.conf
> > > > > >
> > > > > > # Additionnal directory (for indicators)
> > > > > > Alias /indicators2/perl "/disc1/sherpa_a/indicators2/perl"
> > > > > > <Location /indicators2/perl>
> > > > > > SetHandler perl-script
> > > > > > PerlHandler Apache::Registry
> > > > > > PerlSendHeader On
> > > > > > Options +ExecCGI
> > > > > > </Location>
> > > > > >
> > > > > > at the end:
> > > > > >
> > > > > > PerlSetEnv ORACLE_HOME /disc1/sherpa/oracle
> > > > > > PerlRequire conf/startup.pl
> > > > > > PerlFreshRestart On
> > > > > >
> > > > > > Here is the startup.pl
> > > > > >
> > > > > > #!/usr/bin/perl
> > > > > >
> > > > > > # Commonly used modules
> > > > > > use Apache::Registry ();
> > > > > > use Apache::Constants ();
> > > > > > use CGI ();
> > > > > > #use Apache::DBI ();
> > > > > >
> > > > > > #$Apache::DBI::DEBUG=2;
> > > > > > #Apache::DBI->connect_on_init("dbi:Oracle:indicators",
> "indic", "xxxx",
> > > > > > { AutoCommit => 0, RaiseError => 1, PrintError => 0 } )
> > > > > > or die $DBI::errstr;
> > > > > >
> > > > > > 1;
> > > > > >
> > > > > > And finally my test file:
> > > > > >
> > > > > > #!/usr/bin/perl
> > > > > >
> > > > > > use DBI;
> > > > > >
> > > > > > my $dbh = DBI->connect( 'DBI:Oracle:INDICATORS', 'indic',
> xxxx',
> > > > > > { AutoCommit => 0, RaiseError => 0, PrintError => 1 } )
> > > > > > or die $DBI::errstr;
> > > > > >
> > > > > > $dbh->disconnect;
> > > > > >
> > > > > > Thanks in advance
> > > > > > Jerome
> > >
> > > --
> > > David S. Kenzik
> > > [EMAIL PROTECTED] - http://kenzik.com
> >
> > --
> > David S. Kenzik
> > [EMAIL PROTECTED] - http://kenzik.com
>
>--
>David S. Kenzik
>[EMAIL PROTECTED] - http://kenzik.com