ORA-12705: 无法访问 NLS 数据文件或指定了无效的环境

ORA-12705: 无法访问 NLS 数据文件或指定了无效的环境

当我尝试在 Oracle 数据库 Oracle 10gR2 上创建连接池时出现此错误。

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

我能够通过 sqlplus 和 iSQLPlus 客户端连接到数据库,但是当我尝试使用这个 Java 程序连接时,就在初始化连接池并且它没有初始化连接池时出现此错误。

有人可以帮我解决吗?


数据库版本: Oracle version 10.2.0.1

操作系统: RHEL 4.0


这是一个基本的 Java 代码,在连接到我的数据库时会引发此错误。

import java.sql.*;

public class connect{
    public static void main(String[] args) {
        Connection con = null;
        CallableStatement cstmt = null;

        String url = "jdbc:oracle:thin:@hostname:1521:oracle";
        String userName = "username";
        String password = "password";

        try
        {
            System.out.println("Registering Driver ...");
            DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());

            System.out.println("Creating Connection ...");
            con = DriverManager.getConnection(url, userName, password);

            System.out.println("Success!");

        } catch(Exception ex) {
            ex.printStackTrace(System.err);
          } finally {
            if(cstmt != null) try{cstmt.close();}catch(Exception _ex){}
            if(con != null) try{con.close();}catch(Exception _ex){}
            }
    }

}

答案1

我发现你可以将这两个参数传递给你的 Java 应用程序来解决这个问题:

-Duser.country=en -Duser.language=en

您也可以在环境变量级别配置值(取决于您的操作系统)。

答案2

导入 java.util.*;

Locale.setDefault(Locale.ENGLISH); // use this for change NLS
   String URL = "jdbc:oracle:thin:@//"+khost+":"+kport+"/"+kbasename;

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
   Connection con = DriverManager.getConnection(URL,kuser,kpassword);

答案3

什么是

NLS 语言

在您尝试执行 Java 程序的机器上将其设置为?如果尚未设置,您应该先取消设置 NLS_LANG,然后尝试。如果不起作用,请将其设置为特定数据库的字符集,看看是否能解决问题。

答案4

Metalink 中的文档 #158654.1 解释了如何解决此类错误。

这可能是您环境中的一个简单错误(查看 $NLS_* 环境变量)或权限许可(您是否对 $ORACLE_HOME/ocommon/nls/admin/data 有权限?)

相关内容