RE: Connect failure: OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.)



Victor,

I believe this is a permissions issue. There was a posting to this group a few months ago that was very similar in nature. Look around the archives for it.

-----------------
Ron Reidy
Lead DBA
Array BioPharma, Inc.


-----Original Message-----
From: Victor Churchill [mailto:victor@xxxxxxxxxxxxx]
Sent: Thursday, August 25, 2005 8:17 AM
To: dbi-users@xxxxxxxx
Subject: Connect failure: OCIEnvNlsCreate (check ORACLE_HOME and NLS
settings etc.)


Hello all,
I've searched and found a few references to the above error, but none
that seems to suit my situation. I wonder if anyone here may have an
idea of what I should look for next...

I have a pretty straightforward setup (I hope!):

Database server on box "DB" :
Oracle Database 10g Release 10.1.0.3.0 - 64bit Production
Red Hat Enterprise Linux ES release 3 (Taroon Update 5), kernel
2.4.21-27.elsmp

Web server on box "WS" :
Perl 5.8.0
Apache 2.0.46
mod_perl is configured into the Apache by default but I am NOT using it
Oracle Instant Client 10.2
Red Hat Enterprise Linux ES release 3 (Taroon Update 5), kernel
2.4.21-23.elsmp

Also a development system on box "Dev":
perl 5.8.0
Oracle 8.1.7
Red Hat Fedora Core 3, kernel 2.4.18-11smp

Oracle Instant Client on WS has been set up following the 'recipe' (Tim
Barrass, 2/17/05 in this group). WS has a copy of tnsnames.ora
identifying both DB and Dev services.

WS Instant Client can connect to databases on DB and on Dev using
sqlplus from command-line.

As a check, Dev can connect to DB using sqlplus from command-line.

Here's the odd thing...

With a test script run from the command line, WS can connect to DB or to
Dev using DBD::Oracle.

From a CGI perl script it can't. Instead I see the dreaded
OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.)

Both the manual test script (which works) and the CGI script (that
doesn't) make use of the same environment-setting comands, imported from
a "require"d file:

package dbProperties;
require Exporter;
@ISA=qw(Exporter);

@EXPORT = qw ( $ENV{'PATH'}
$ENV{'ORACLE_HOME'}
$ENV{'LD_LIBRARY_PATH'}
$ENV{'SQLPATH'}
$ENV{'TNS_ADMIN'}
$ENV{'PERL5LIB'}
$ENV{'NLS_LANG'}
$dsn $dbuser $dbpassword
$appIP $LXASIP $DDSIP );

#### Oracle Environment and variable assignments

$ENV{'PATH'} =
'/usr/local/OraClient/instantclient_10_2/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin';
$ENV{'ORACLE_HOME'} = '/usr/local/OraClient/instantclient_10_2';
$ENV{'LD_LIBRARY_PATH'} = '/usr/local/OraClient/instantclient_10_2/lib';
$ENV{'SQLPATH'} = '/usr/local/OraClient/instantclient_10_2/bin';
$ENV{'TNS_ADMIN'} = '/usr/local/OraClient';
$ENV{'PERL5LIB'} =
'/usr/local/OraClient/instantclient_10_2/perl-modules/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi';

$ENV{'NLS_LANG'} = 'AMERICAN_AMERICA.UTF8';# '',
'WE8ISO8859P1','ENGLISH','AL32UTF8' also tried...;

$dsn = q{dbi:Oracle:QQ3_VLAN} ;
($dbuser,$dbpassword) = ("foo","foo");


Putting a print into the CGI script, and running 'env' on the command
line, shows that the two connection-attempots both have the same values
for these environment variables:

PERL5LIB=/usr/local/OraClient/instantclient_10_2/perl-modules/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
LD_LIBRARY_PATH=/usr/local/OraClient/instantclient_10_2/lib:
TNS_ADMIN=/usr/local/OraClient
PATH=/usr/local/OraClient/instantclient_10_2/bin:/usr/kerberos/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/qg/bin
LANG=en_US.UTF-8
SQLPATH=/usr/local/OraClient/instantclient_10_2/bin
ORACLE_HOME=/usr/local/OraClient/instantclient_10_2

It's obvious that I'm still missing something. It's not obvious to me
what that is. Can anyone suggest what I should look for next?

Thanks,

victor churchill

This electronic message transmission is a PRIVATE communication which contains
information which may be confidential or privileged. The information is intended
to be for the use of the individual or entity named above. If you are not the
intended recipient, please be aware that any disclosure, copying, distribution
or use of the contents of this information is prohibited. Please notify the
sender of the delivery error by replying to this message, or notify us by
telephone (877-633-2436, ext. 0), and then delete it from your system.

.



Relevant Pages

  • Re: concise code (beginner)
    ... But the python script doesn't look anything ... and external [dev] loops. ... flag on each device in the exception handler, ...
    (comp.lang.python)
  • Re: isolated testing environment
    ... Basically it's all about defining your aliases to point to another location. ... One approach I use in some of my apps: ... Prod is probably on your server, dev could also be on the server or on your ... In the start script I define all alias for the app. ...
    (comp.databases.paradox)
  • Re: Pattern for foo tool <-> API <-> shell|GUI
    ... The user can execute a Python script in the shell, ... There are multiple command ... where the command-line handler might look something like:: ... documentation of generate-- and any other methods that accept handler ...
    (comp.lang.python)
  • [SLE] Courier-IMAP at startup, help
    ... I compiled Courier-imap, and I can start it at the command-line ... Then I modified that script so the ... Then I started it with the run-level manager (and ...
    (SuSE)
  • Re: IPSec
    ... but it's a lot more friendly than the command-line. ... Microsoft Windows Networking ... there are no APIs available for manipulating IPSec policy. ... > Use of included script samples are subject to the terms specified at ...
    (microsoft.public.win2000.security)