ORA-00604 ORA-12705

ced*_*ric 9 oracle nls java-ee ora-12705

我在我的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)
Run Code Online (Sandbox Code Playgroud)

这个项目在我同事的电脑上工作......我的意思是这个项目对他们有效,但当我要求他们的项目文件夹并将其导入我的日食时,当我运行它时,我遇到了这个错误.jar文件已与项目文件夹一起打包.

我还使用hibernate创建了一个简单的j2ee项目,但我遇到了同样的错误.我试图ping数据库服务器并使用PL/SQL开发人员浏览它,我没有任何问题

小智 7

我有同样的问题。解决方案是将国家和语言添加到sqldeveloper.conf

请打开文件:

\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf
Run Code Online (Sandbox Code Playgroud)

并添加以下内容:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us
Run Code Online (Sandbox Code Playgroud)

以上就是诀窍。

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


zen*_*dar 5

试试以下:

  1. 检查NLS_LANG设置是否正确.在Windows上,它在注册表下\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.
  2. 检查是否已正确安装Oracle客户端软件.
  3. 检查该计算机上是否有多个Oracle主目录.在这种情况下,找到活动的并检查它是否有效.
  4. 如果安装了SQL*Plus,请使用SQL*Plus进行测试.Sql Developer的工作原理是因为它有自己的客户端安装.

编辑:
关于驱动程序,请检查以下站点:Oracle Instant Client.在那里,您将找到有关JDBC访问Oracle所需的最小驱动程序安装的文档.我不太了解,因为我使用.Net.

编辑2:
请参阅此问题:JDBC瘦驱动程序的NLS_LANG设置.您遇到了同样的错误,问题是未定义NLS LANG的默认语言环境.引用:

NLS_LANG设置派生自java.util.Locale.因此,在连接之前,您需要进行类似的调用:

  Locale.setDefault(Locale.<your locale here>);
Run Code Online (Sandbox Code Playgroud)


Fox*_*BOA 5

我发现可以将这两个参数传递给Java应用程序来解决此问题:

-Duser.country=en -Duser.language=en
Run Code Online (Sandbox Code Playgroud)

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


小智 5

对于 Windows env,您需要将系统区域设置更改System FormatEnglish/US.

如何更改系统区域设置?