Perl到Oracle连接错误:ERROR OCINlsEnvironmentVariableGet(OCI_NLS_CHARSET_ID)

时间:2014-12-15 17:11:35

标签: oracle perl remote-access

我正在尝试连接到我的perl应用程序中的远程oracle数据库。 运行应用程序时,会出现以下错误:

"Connection Error: ERROR OCINlsEnvironmentVariableGet(OCI_NLS_CHARSET_ID)"

我获得了Oracle Instant Client并将其置于本地,然后将Oracle Home env设置为它,因为我没有安装Oracle客户端。 我的代码如下:

BEGIN {
       $ENV{NLS_LANG}           = "AMERICAN_AMERICA.UTF8";
       $ENV{OCI_NLS_CHARSET_ID} = "AMERICAN_AMERICA.UTF8";
        $ENV{ORACLE_HOME} = #The path to the instant Oracle client";
        }
    #Connect to database
    my $DBHandle = DBI->connect(
        "dbi:Oraclehost=$host;sid=$sid;port=$port",
        $userName,
        $passWord
    ) or die "Connection Error: $DBI::errstr\n";

我在Windows Server 2008上使用ActiveStat perl,ORACLE 10g

1 个答案:

答案 0 :(得分:1)

我能找到根本原因。我使用了Oracle Instant Client lite(instantclient-basiclite-win64-10.2.0.5),它只包含二进制文件。然后我尝试了Oracle Instant Client - SDK,它只包含lib。 我发现我需要合并两个以使我的代码工作,我使用SDK作为主客户端,在其中创建一个bin目录然后将lite客户端放入其中......它的工作原理!