[rt-users] OCIEnvNlsCreate (check ORACLE_HOME and NLS settings) with mod_perl 1.29

Joop van de Wege JoopvandeWege at mococo.nl
Wed Jul 13 03:46:40 EDT 2005


On Tue, 12 Jul 2005 14:27:21 -0400 (EDT)
rt-users-request at lists.bestpractical.com wrote:

> I'm getting the OCIEnvNlsCreate (check ORACLE_HOME and NLS settings)
> error when trying to browse to my RT installation.  I've been
> researching this problem for quite awhile now and none of the standard
> solutions have worked for me.
> 
> Here's my environment....
> 
> RT 3.4.2 (new install)
> Apache/1.3.33 (Debian GNU/Linux) mod_perl/1.29
> Oracle 10g remote server using Oracle Instant Client
> DBD::Oracle 1.16
> make testdeps shows all found
> 
> httpd.conf...
> 
>     PerlSetEnv "TWO_TASK" "app1"
>     PerlSetEnv "ORACLE_HOME" "/opt/oracle/instantclient10_1"
>     PerlSetEnv "LD_LIBRARY_PATH" "/opt/oracle/instantclient10_1/lib"
>     PerlSetEnv "NLS_LANG" "AMERICAN_AMERICA.UTF8"
> 
>     <Perl>
>     print "$_ = $ENV{$_}\n" for sort keys %ENV;
>     use DBI;
>     DBI->connect('dbi:Oracle:app1','rt','X') || print "Connect Failed
> $DBI::errstr\n";
>     </Perl>
> 
>     PerlModule Apache::DBI
>     PerlRequire /opt/rt3/bin/webmux.pl
> 
>     <Location />
>      SetHandler perl-script
>      PerlHandler RT::Mason
>     </Location>
> 
> I added the <Perl> code at the beginning just to see if it was any
> issue with RT or not.  When I run the code enclosed in <Perl> tags
> from the command line it connects successfully.  However, when I
> startup apache and try to run the same code I get "DBI
> connect('app1','rt',...) failed: ERROR OCIEnvNlsCreate (check
> ORACLE_HOME and NLS settings etc.)".  Both runs show the proper ENV
> variables set before DBI loads up the Oracle library.  This isn't
> mod_perl2 so it's not related to the C %ENV problem found in the
> troubleshooting faq.
> 
> Can anyone help?
I have had a similar if not the same problem, I'm  on Oracle9i R2, and
solved it by either setting ENV stuff in my .profile of my webuser
and/or setting it in RT.lib.
The reason is that before RT loads it configuration settings it clears
out its ENV, including whatever you have set in httpd.conf or in your
shell.
I remember this because recently I started using AT and modified a
dataloader script to work with active-state perl on windows so I can
scan computers on our networks and import them directly into RT-AT.
This script started complaining about wrong NLS settings which I blamed
originally on my windows machine but it turned out I  had added NLS
parameters in RT.lib (very bad I know)

Maybe this helps,

Joop

-- 
Joop van de Wege <JoopvandeWege at mococo.nl>




More information about the rt-users mailing list