Link to home
Start Free TrialLog in
Avatar of Jason Minton
Jason MintonFlag for United States of America

asked on

Perl DBI ERROR OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.)

I'm moving some stuff to a new server and I'm getting this error:

DBI connect('okcdev00','xxxx',...) failed: ERROR OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.) at /u/unilocal/apache2/cgi-bin/test.cgi line 22

Test script attached...

What other information do I need to provide to help solve this problem?

Thank you!
#!/usr/bin/perl
 
use strict;
use DBI;
 
print "Content-type: text/html\n\n";
print "Connecting ... <p>";
 
# Oracle Path
$ENV{ORACLE_HOME} = "/u/spool/oracle/product/8.1.7";
$ENV{NLS_LANG} = "AMERICAN_AMERICA.UTF8";
 
my $db = "okcdev00";
my $user = "xxxx";
my $passwd = "xxxx";
my $dbh;
 
eval
{
        print "ORACLE_HOME: '$ENV{ORACLE_HOME}' <br />";
        print "NLS: '$ENV{NLS_LANG}' <hr>";
   $dbh = DBI->connect("dbi:Oracle:$db", $user, $passwd, {RaiseError => 1, AutoCommit => 1});
};
 
if ($@)
{
        print $@;
}
else
{
        print 'No Error...';
        print ' dbh returned' if ($dbh);
}

Open in new window

Avatar of Adam314
Adam314

On your old server, look at the values of the environment variables ORACLE_HOME and NLS.  You will have to set those the same on this new server.
Avatar of Jason Minton

ASKER

Hey Adam... I've done that as far as I can tell:
OLD
PATH=/u/spool/oracle/product/8.1.7/bin:/u/local/binaries:/u/local/bin:/usr/local/bin:/u/local/:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/spool/uucppublic/bin:/usr/bin/X11:/sbin.
ORACLE_BASE=/u/spool/oracle
ORACLE_SID=okcprd01
ORACLE_TERM=vt100
ORACLE_HOME=/u/spool/oracle/product/8.1.7
LIBPATH=/u/spool/oracle/product/8.1.7/lib:/usr/lib
 
 
NEW
PATH=/u/spool/oracle/product/8.1.7/bin:/u/local/binaries:/u/local/bin:/usr/local/bin:/u/local/:/usr/bin:/etc:/usr/sbin:/usr/ucb:/u/home/uniclaim/bin:/usr/bin/X11:/sbin.
ORACLE_BASE=/u/spool/oracle
ORACLE_SID=okcprd01
ORACLE_TERM=vt100
ORACLE_HOME=/u/spool/oracle/product/8.1.7
LIBPATH=/u/spool/oracle/product/8.1.7/lib:/usr/lib

Open in new window

Do both computers have version 8.1.7 of oracle on them?
Are the data in /u/spool/oracle/product/8.1.7 the same on both computers?
yep, it all looks the same... :|
Are permissions on all relavant files/directories the same?
Yes, I've checked the permissions...  Someone else helping just emailed me the attached errors.  Looks like it could be that something isn't compiled correctly...  Any ideas based on this???
install_driver(Oracle) failed: Can't load '/u/unilocal/perl-5.8.0-site/lib/aix/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle:       
0509-130 Symbol resolution failed for /u/unilocal/perl-5.8.0-site/lib/aix/auto/DBD/Oracle/Oracle.so because:
 
        0509-136   Symbol OCIEnvNlsCreate (number 140) is not exported from dependent module /u/spool/oracle/product/8.1.7/lib/libclntsh.a(shr.o).
        0509-136   Symbol OCINlsEnvironmentVariableGet (number 141) is not exported from dependent module /u/spool/oracle/product/8.1.7/lib/libclntsh.a(shr.o).
        0509-136   Symbol OCINlsCharSetNameToId (number 142) is not exported from dependent module /u/spool/oracle/product/8.1.7/lib/libclntsh.a(shr.o).
        0509-022 Cannot load module /u/unilocal/perl-5.8.0-site/lib/aix/auto/DBD/Oracle/Oracle.so.
        0509-026 System error: Cannot run a file that does not have a valid format.
        0509-192 Examine .loader section symbols with the 'dump -Tv' command. at /u/unilocal/perl-5.8.0/lib/aix/DynaLoader.pm line 229. at (eval 2) line 3
 
Compilation failed in require at (eval 2) line 3.
Perhaps a required shared library or dll isn't installed where expected at ./testdb.pl line 32

Open in new window

I'm not sure...
Are all of the files in /u/spool/oracle identical on the old and new server?
Yes, they are identical -- and that may be the problem, because the old OS is an older version of AIX and the new system I believe is running AIX 5.3.  So probably we will have to recompile some stuff...
I don't know.  Did you compile on the previous system?
How did you install it on this system?
I believe the storage guys just did a restore from tape from the previous system...  Someone is checking on it.

I guess we just need to close this question...  Umm, I'm do you want the points or should we just request it be closed since it won't really help anyone else...  Sorry to waste your time, but I appreciate your asstance.
ASKER CERTIFIED SOLUTION
Avatar of Adam314
Adam314

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
This turned out to be a problem with incompatible client/server versions.  We tried using the 9i client and it worked fine.