web-dev-qa-db-ja.com

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プログラムを使用して接続しようとすると、接続プールを初期化するときにこのエラーが発生します。接続プールを初期化しません。

誰かがそれを解決するのを手伝ってくれませんか?


DBバージョン:Oracle version 10.2.0.1

OS: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){}
            }
    }

}
7
M.N

問題を解決するために、2つのパラメータをJavaアプリに渡すことができることを理解しました。

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

環境変数レベルでも値を構成できます(OSによって異なります)。

11
FoxyBOA

import 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
qorodok

とは

NLS_LANG

Javaプログラムを実行しようとしているマシンでに設定しますか?まだ設定していない場合は、最初にNLS_LANGの設定を解除して、それを試してください。それが機能しない場合は、特定のデータベースの文字セットに変更して、問題が解決するかどうかを確認します。

1
Keith

Metalinkのドキュメント#158654.1は、この種のエラーを解決する方法を説明しています。

これは、環境内の単純なエラー($ NLS_ *環境変数を確認してください)または権限の許可($ Oracle_HOME/ocommon/nls/admin/dataに対する権限がありますか?)

0
Benoit