Code Comments

Programming Forum and web based access to our favorite programming groups.
For Programmers: Free Programming Magazines | New: Database administration forum
Registration is free! Edit your profileCalendarFind other membersFrequently Asked QuestionsSearch -> 
Post New Thread











Thread
Author

Re: OCIEnvNlsCreate error with DBD::Oracle 1.21 and Oracle 10g client
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  "Er
ror ".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 OR
ACLE_HOME env var, NLS settings, permissions, etc. at tmp.pl line 26
> Error ERROR OCIEnvNlsCreate. Check ORACLE_HOME env var, NLS settings, perm
issions, etc. at tmp.pl line 26.
>
> I would greatly appreciate your help in identifying the problem, if possib
le!!!
>
> 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 cl
ient 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: 


Report this thread to moderator Post Follow-up to this message
Old Post
Christian Merz
04-30-08 09:52 AM


Sponsored Links




Last Thread Next Thread Next
Search this forum -> 
Post New Thread

PERL DBI archive

Show a Printable Version Send to friend Email This Page to Someone! subscribe to this thread Receive updates to this thread
Computer Consultants
Programming Jobs
Visual Basic Controls
SQL Server Programming
Webservices
Java Security
Visual Studio
C# Programming
Visual J++
Software engineering
Open source Software
Perl Programming
PHP Programming
ASP Programming
ASP .NET Programming
Visual Basic Programming
Windows Scripting Host
Java Programming
Java Help
Java Beans
VBScript
Cobol
MAC Applications
Unix Programming
Forum Jump:
All times are GMT. The time now is 12:33 AM.

 
Free MCSE Braindumps | Real Estate Topics

Programming forum archive

Copyrights CodeComments.com 2004 - 2006

Powered by vBulletin Copyright 2000-2006 Jelsoft Enterprises Limited.