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

Reply via email to