尝试在我的 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){}
}
}
}
我发现您可以将这两个参数传递给您的 Java 应用程序来解决问题:
您也可以在环境变量级别配置值(取决于您的操作系统)。
导入 java.util.*;
什么是
在您尝试执行 java 程序的机器上设置为?如果您还没有,您应该首先取消设置 NLS_LANG 并尝试。如果这不起作用,请将其设置为特定数据库的字符集,看看是否能解决问题。
Metalink 中的文档#158654.1 解释了如何解决此类错误。
这可能是您的环境中的一个简单错误(查看 $NLS_* 环境变量)或权限权限(您对 $ORACLE_HOME/ocommon/nls/admin/data 有权限吗?)