Я получаю эту ошибку при попытке создать пул соединений в моей базе данных 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-приложению, чтобы решить проблему:
-Duser.country=en -Duser.language=en
Вы также можете настроить значения на уровне переменных среды (в зависимости от вашей ОС).
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 и попробовать это. Если это не сработает, установите его на набор символов вашей конкретной базы данных и посмотрите, решит ли это проблему.
Документ № 158654.1 в Metalink объясняет, как устранять такие ошибки.
Это может быть простая ошибка в вашем окружении (посмотрите на переменные окружения $ NLS_ *) или права доступа (есть ли у вас права на $ ORACLE_HOME / ocommon / nls / admin / data?)