我在尝试在Oracle数据库Oracle 10gR2上创build连接池时遇到此错误。
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){} } } }
我发现你可以将这两个parameter passing给你的Java应用程序来解决这个问题:
-Duser.country=en -Duser.language=en
您也可以在环境variables级别configuration值(取决于您的操作系统)。
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);
什么是
NLS_LANG
设置在你试图执行java程序的机器上? 如果你还没有,你应该先取消设置NLS_LANG并尝试。 如果这不起作用,请将其设置为特定数据库的字符集,然后查看是否解决了该问题。
Metalink中的文档#158654.1说明了如何解决这类错误。
这可能是环境中的一个简单错误(查看$ NLS_ *环境variables)或权限权限(您是否拥有$ ORACLE_HOME / ocommon / nls / admin / data的权限?)