[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dbi-users
Subject:    Re: OCIEnvNlsCreate error with DBD::Oracle 1.21 and Oracle 10g client
From:       Christian Merz <christian.merz () muenchen ! de>
Date:       2008-04-30 7:53:58
Message-ID: 48182596.7020104 () muenchen ! de
[Download RAW message or body]

Hi Dunston,

the problem could the DBD::Oracle installation.
Do you have multiple Oracle installations on your box?

If not: you could reinstall DBI and DBD::Oracle and make sure that your 
Oracle environment is set correctly. Are/Were there any errors during 
the installation?

If you have multiple Oracle installations: set your $ENV{ORA_NLS10} 
using the ORACLE_HOME with which you compiled your DBD::Oracle. Also try 
ORA_NLS and  ORA_NLS33 (if the installation is pre-Oracle 10) - but only 
one of the ORA_NLS variables per test.

If you have multiple perl installations (with DBI, DBD::Oracle) you may 
have to set the correct path to perl (first line of your script).

Next step might be tracing:
	DBI->trace($trace_setting, $trace_filename)

cu, Christian


Dunston Rocks schrieb:
> Hi
> Firstly, thanks for continuing to work with me on this. Here's my
> script. and the output. I am able to connect to all databases from
> the cygwin prompt, but am
unable to get the script to connect.
> I have all the below-mentioned environment variables set in the
Windows environment as well, which cygwin picks up at start-up as well.
> Regardless, I set them in the script as well, as shown below. I have
> tried all variations of the DBI->connect statement mentioned in
the perldocs in the script below, but continue to encounter the
OCIEnvNlsCreate error.

> It seems to be a permissions issue, but I don't know where to look. 
> *************************** SCRIPT *************************************
> #!/usr/bin/perl
> 
> use strict;
> use DBI;
> 
> print "Testing connection to DEV \n";
> $ENV{ORACLE_SID}        = 'CBDEV';
> $ENV{TWO_TASK}        = 'CBDEV';
> $ENV{TNS_ADMIN}        = 'C:\oracle\product\10.2.0\client_2\NETWORK\ADMIN\tnsnam
> es.ora';     # Also tried replacing these with POSIX-Style paths
> $ENV{ORACLE_HOME}      = "C:\oracle\product\10.2.0\client_2";
> $ENV{NLS_LANG}          = "AMERICAN_AMERICA.WE8DEC";
> $ENV{ORA_NLS}          = $ENV{ORACLE_HOME}."/ocommon/nls/admin/data";
> $ENV{LD_LIBRARY_PATH}  = $ENV{ORACLE_HOME}."/lib";
> $ENV{ORA_NLS10}        = '/oracle/product/10.2.0/client_2/nls/data';
> 
> my @driver_names = DBI->available_drivers;
> 
> foreach my $driver_name (@driver_names) {
> 
> print $driver_name,"\n";
> my %attr;
> 
> my  @data_sources = DBI->data_sources($driver_name, \%attr);
> foreach (@data_sources) {
> print "Data Source: ",$_,"\n";    
> if ($_ =~/CBDEV) {
> my $cHash = &getCytoband(); # fails with OCI Env NlsError
> here.....
> }
> }
> }
> 
> sub getCytoband() {
> my($name, $id);
> my %nameHash;
> 
> my $dbh = DBI->connect('DBI:Oracle:CBDEV', 'dunston', 'rocks') || die  "Error \
> ".DBI->errstr; my $sql = qq(SELECT * from GENE_NAMES);
> my $sth = $dbh->prepare($sql);
> $sth->execute();
> 
> $sth->bind_columns(\$id, \$name);
> 
> while($sth->fetch()) {
> 
> $name=~s/\s+//g;
> $id=~s/\s+//g;
> 
> $nameHash{$name}=$id;
> print "Name : $name ", $nameHash{$name}, "\n";
> }
> return \%nameHash;
> }
> 
> exit;
> 
> *************************** OUTPUT *************************************
> 
> DBM
> *****DBI:DBM:f_dir=.cpan
> *****DBI:DBM:f_dir=.texmf
> *****DBI:DBM:f_dir=acroread
> *****DBI:DBM:f_dir=apache-ant-1.6.5
> *****DBI:DBM:f_dir=apache-ant-1.7.0-bin
> *****DBI:DBM:f_dir=AppName
> *****DBI:DBM:f_dir=autorun
> *****DBI:DBM:f_dir=caBIO
> *****DBI:DBM:f_dir=cabioApp
> *****DBI:DBM:f_dir=cygwin
> *****DBI:DBM:f_dir=dell
> *****DBI:DBM:f_dir=Documents and Settings
> *****DBI:DBM:f_dir=Downloads
> *****DBI:DBM:f_dir=drivers
> *****DBI:DBM:f_dir=httpd-2.2.8
> *****DBI:DBM:f_dir=i386
> *****DBI:DBM:f_dir=indexes
> *****DBI:DBM:f_dir=jboss-4.0.4.GA
> *****DBI:DBM:f_dir=jboss-4.0.5.GA
> *****DBI:DBM:f_dir=MSOCache
> *****DBI:DBM:f_dir=MyApp
> *****DBI:DBM:f_dir=NALCache
> *****DBI:DBM:f_dir=NOVELL
> *****DBI:DBM:f_dir=oracle
> *****DBI:DBM:f_dir=Perl
> *****DBI:DBM:f_dir=Perl-Critic-1.082
> *****DBI:DBM:f_dir=Perl-Tidy-20071205
> *****DBI:DBM:f_dir=Program Files
> *****DBI:DBM:f_dir=RECYCLER
> *****DBI:DBM:f_dir=ruby
> *****DBI:DBM:f_dir=System Volume Information
> *****DBI:DBM:f_dir=Tcl
> *****DBI:DBM:f_dir=Temp
> *****DBI:DBM:f_dir=WINDOWS
> *****DBI:DBM:f_dir=.
> ExampleP
> *****dbi:ExampleP:dir=.
> File
> *****DBI:File:f_dir=.cpan
> *****DBI:File:f_dir=.texmf
> *****DBI:File:f_dir=acroread
> *****DBI:File:f_dir=apache-ant-1.6.5
> *****DBI:File:f_dir=apache-ant-1.7.0-bin
> *****DBI:File:f_dir=AppName
> *****DBI:File:f_dir=autorun
> *****DBI:File:f_dir=caBIO
> *****DBI:File:f_dir=cabioApp
> *****DBI:File:f_dir=cygwin
> *****DBI:File:f_dir=dell
> *****DBI:File:f_dir=Documents and Settings
> *****DBI:File:f_dir=Downloads
> *****DBI:File:f_dir=drivers
> *****DBI:File:f_dir=httpd-2.2.8
> *****DBI:File:f_dir=i386
> *****DBI:File:f_dir=indexes
> *****DBI:File:f_dir=jboss-4.0.4.GA
> *****DBI:File:f_dir=jboss-4.0.5.GA
> *****DBI:File:f_dir=MSOCache
> *****DBI:File:f_dir=MyApp
> *****DBI:File:f_dir=NALCache
> *****DBI:File:f_dir=NOVELL
> *****DBI:File:f_dir=oracle
> *****DBI:File:f_dir=Perl
> *****DBI:File:f_dir=Perl-Critic-1.082
> *****DBI:File:f_dir=Perl-Tidy-20071205
> *****DBI:File:f_dir=Program Files
> *****DBI:File:f_dir=RECYCLER
> *****DBI:File:f_dir=ruby
> *****DBI:File:f_dir=System Volume Information
> *****DBI:File:f_dir=Tcl
> *****DBI:File:f_dir=Temp
> *****DBI:File:f_dir=WINDOWS
> *****DBI:File:f_dir=.
> Gofer
> Oracle
> *****dbi:Oracle:CBDEV
> DBI connect('CBDEV','dunston',...) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME \
> env var, NLS settings, permissions, etc. at tmp.pl line 26 Error ERROR \
> OCIEnvNlsCreate. Check ORACLE_HOME env var, NLS settings, permissions, etc. at \
> tmp.pl line 26. 
> I would greatly appreciate your help in identifying the problem, if possible!!!
> 
> Thanks much!
> 
> ----- Original Message ----
> From: Christian Merz <christian.merz@muenchen.de>
> To: Dunston Rocks <rocksdunston@yahoo.com>
> Cc: dbi-users@perl.org
> Sent: Thursday, April 24, 2008 3:38:12 AM
> Subject: Re: OCIEnvNlsCreate error with DBD::Oracle 1.21 and Oracle 10g client in \
> Cygwin 
> Hello Dunston,
> 
> did you read
> perldoc DBI
> and
> perldoc DBD::Oracle
> 
> ? To detect if DBI is able to locate DBD::Oracle use:
> @driver_names = DBI->available_drivers;
> 
> If so, you can idenitfy your oracle Instances via:
> @data_sources = DBI->data_sources($driver_name, \%attr);
> 
> You may try:
> use DBI;
> print "available_drivers:\n";
> print "$_\n" foreach DBI->available_drivers;
> print "\ndata_sources:\n";
> print "$_\n" foreach DBI->data_sources('Oracle');
> 
> The output of the latter may be used for the connect statement.
> 
> cu, Christian
> 
> 
> Dunston Rocks schrieb:
> > Hi
> > I have updated my system per your instructions and also included these lines as a \
> > preamble in my test script. 
> > I have modified the security settings for every folder under ORACLE_HOME to give \
> > full read-write permissions to every user-account on this computer. 
> > However I still continue to encounter the same error.
> > 
> > Any input on resolving the above would be helpful!
> > 
> > Thanks
> > 
> > ----- Original Message ----
> > From: Christian Merz <christian.merz@muenchen.de>
> > To: Dunston Rocks <rocksdunston@yahoo.com>
> > Cc: dbi-users@perl.org
> > Sent: Wednesday, April 23, 2008 6:50:57 AM
> > Subject: Re: OCIEnvNlsCreate error with DBD::Oracle 1.21 and Oracle 10g client in \
> > Cygwin 
> > Hello Dunston,
> > 
> > in my test script i set:
> > 
> > $ENV{ORACLE_SID}        = "ORCL";
> > $ENV{ORACLE_HOME}       = "/path/to/oracle/home";
> > $ENV{NLS_LANG}          = "AMERICAN_AMERICA.WE8DEC";    
> > # or "GERMAN_GERMANY.WE8ISO8859P15";
> > $ENV{ORA_NLS}           = $ENV{ORACLE_HOME} . "/ocommon/nls/admin/data";
> > $ENV{PATH}              = $ENV{ORACLE_HOME} . "/bin:/usr/bin";
> > $ENV{LD_LIBRARY_PATH}   = $ENV{ORACLE_HOME} . "/lib";
> > 
> > In Oracle10 you should replace NLS_LANG by s'thing like:
> > $ENV{ORA_NLS10}         = '/oracle/product/10.2.0/nls/data';
> > 
> > cu, Christian
> > 
> > 
> > Dunston Rocks schrieb:
> > > Hi
> > > I had posted a few days ago about facing problems installing DBD::Oracle with \
> > > Oracle 10g client under Cygwin. Though those were circumvented successfully, \
> > > when I try to run a simple script that calls DBI->Connect, I get  
> > > DBI connect(....) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME env var, NLS \
> > > settings, permissions, etc. at tmp.pl line 12 Error ERROR OCIEnvNlsCreate. \
> > > Check ORACLE_HOME env var, NLS settings, permissions, etc. at tmp.pl line 12. 
> > > ORACLE_HOME C:\oracle\product\10.2.0\client_2
> > > ORACLE_SID DEVDB
> > > TWO_TASK DEVDB
> > > NLS_LANG WE8ISO8859P15
> > > 
> > > I saw some earlier threads on this issue which recommended ensuring that the \
> > > permissions on ORACLE_HOME/bin and ORACLE_HOME/lib are set correctly.  All \
> > > user-accounts on this machine have "Full Control" for these directories. 
> > > Any recommendations anyone?
> > > 
> > > Thanks


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic