-->

ORA-00604 ORA-12705(ORA-00604 ORA-12705)

2019-09-01 11:05发布

我有我的J2EE Web应用程序这个错误。

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

 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
 oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:376)
 oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
 oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
 java.sql.DriverManager.getConnection(Unknown Source)
 java.sql.DriverManager.getConnection(Unknown Source)
 org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
 org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
 org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
 org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)


 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)

该项目工程在我同事的电脑......我的意思是这个项目为他们工作,但是当我问他们的项目文件夹并将其导入我的日食,当我运行它,我遇到这个错误。 JAR文件已经打包在项目文件夹。

我还创建使用Hibernate一个简单的J2EE项目,但我有同样的错误。 我试图平数据库服务器,并使用PL / SQL开发浏览它,我不会有任何问题

Answer 1:

尝试以下操作:

  1. 检查NLS_LANG设置正确。 在Windows上,在注册表中\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
  2. 检查Oracle客户端软件安装正确。
  3. 检查是否有该计算机上的多个Oracle家。 在这种情况下,找到一个积极和检查是否正常工作。
  4. 使用SQL *测试另外,如果有一个安装。 SQL开发人员的作品,因为它有自己的客户端安装。

编辑:
关于驱动程序,检查这个网站: Oracle即时客户端 。 在那里,你会发现需要JDBC访问Oracle最小的驱动安装文件。 我不很了解,因为我使用的.NET。

编辑2:
看到这个问题: NLS_LANG设置JDBC Thin驱动程序 。 有同样的错误,你有和问题是,对NLS LANG默认语言环境没有定义。 引用:

该NLS_LANG设置从java.util.Locale中的。 因此,你需要在连接之前做出类似这样的电话:

  Locale.setDefault(Locale.<your locale here>);


Answer 2:

我想通了,你可以传递两个参数到您的Java应用程序来解决这个问题:

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

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



Answer 3:

对于Windows ENV,您需要将系统区域设置和更改System Format ,以English/US

如何更改系统语言环境?



Answer 4:

我有同样的问题。 解决的办法是增加国家和语言sqldeveloper.conf

请打开文件:

\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf

并添加以下内容:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

以上是卓有成效的。

参考: http://forum.oradba.net/showthread.php?t=423&langid=1



Answer 5:

我找到了解决办法,我只是改变了区域和语言在我的操作系统(Windows 7),请确保它与Oracle相匹配的区域和语言。



Answer 6:

首先执行查询:

select userenv('LANGUAGE') from dual;`

这将使甲骨文区域和语言。 更改操作系统的区域和语言,都应该匹配。



Answer 7:

Oracle JDBC驱动程序打开新的连接后,含蓄地执行以下语句:

ALTER SESSION SET NLS_LANGUAGE='language' NLS_TERRITORY='territory'

在我们的例子中,我们曾与嵌入到JDBC驱动程序的Oracle XE 11g和默认语言/地区的映射问题:“儒”区域被定位为“CIS”领土这是仅由Oracle EE支持,但甲骨文XE只有“俄罗斯的领土。 这是我们解决了这个问题的方式:

-Doracle.jdbc.territoryMap="ru=RUSSIA;RU=RUSSIA"

没有为NLS_LANGUAGE选项(我们曾与默认没有问题):

-Doracle.jdbc.languageMap="ru=RUSSIAN;RU=RUSSIAN"

修正:常数RU =俄语从Java JDBC驱动程序类oracle.sql.converter.CharacterSetMetaData服用。



Answer 8:

检查JAVA_HOME系统变量并验证它是你正在使用你的项目和方案版本相同



文章来源: ORA-00604 ORA-12705