Java ORA-12705和ORA-00604生产中的错误

Java ORA-12705和ORA-00604生产中的错误,java,spring,oracle,hibernate,oracle11g,Java,Spring,Oracle,Hibernate,Oracle11g,我们有下面的ORA错误,它用不同的语言打印错误消息。这种情况很少发生,我们必须重新启动应用服务器。 在我的分析中,我可以发现,当连接到数据库时,JDBC通过使用用户的语言环境(如下所示)在内部改变会话 ALTER SESSION SET TIME_ZONE='America/Los_Angeles' NLS_LANGUAGE='LATIN AMERICAN SPANISH' NLS_TERRITORY='LAOS' Oracle团队表示,目前还没有名为拉丁美洲西班牙语的语言,请从应用程序端查看

我们有下面的ORA错误,它用不同的语言打印错误消息。这种情况很少发生,我们必须重新启动应用服务器。 在我的分析中,我可以发现,当连接到数据库时,JDBC通过使用用户的语言环境(如下所示)在内部改变会话

ALTER SESSION SET TIME_ZONE='America/Los_Angeles' NLS_LANGUAGE='LATIN AMERICAN SPANISH' NLS_TERRITORY='LAOS'
Oracle团队表示,目前还没有名为拉丁美洲西班牙语的语言,请从应用程序端查看它的设置位置。我们很难弄清楚它发生在哪里

我的项目概要,它是一个使用以下技术堆栈开发的web应用程序。 1.甲骨文11g 2.Spring MVC 3.2.3 3.休眠3.5.6 4.使用集群的JBOSS应用服务器

以下是从DB团队端提取的日志

*** 2016-05-26 05:23:40.831
*** SESSION ID:(58.51587) 2016-05-26 05:23:40.831
*** CLIENT ID:() 2016-05-26 05:23:40.831
*** SERVICE NAME:(NACCO) 2016-05-26 05:23:40.831
*** MODULE NAME:(JDBC Thin Client) 2016-05-26 05:23:40.831
*** ACTION NAME:() 2016-05-26 05:23:40.831

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3,    mask=0x0)
----- Error Stack Dump -----
ORA-12705: No se puede acceder a los archivos de datos NLS o se ha especificado un entorno no válido
----- Current SQL Statement for this session (sql_id=b6m5bkmu49p0j) -----
ALTER SESSION SET TIME_ZONE='America/Los_Angeles' NLS_LANGUAGE='LATIN  AMERICAN SPANISH' NLS_TERRITORY='LAOS'
在找出根本原因并加以解决方面,我们正经历着非常艰难的时期。如果有任何人能帮助我们修复或复制这个问题在当地将不胜感激。提前谢谢

异常堆栈跟踪以供参考

java.lang.Exception: Exception Identifier : 7843441347475577703, java.sql.SQLException: ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-12705:无需加入荷兰国家档案馆,也无需加入瓦里多特别行政区

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
    at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018)
    at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:497)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:433)
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:950)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:662)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:560)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:172)
    at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:619)
    at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:264)
    at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:575)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347)
    at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849)
    at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy159.findUserByName(Unknown Source)
    at tavant.twms.web.actions.ManageSSO.createOrUpdateUser(ManageSSO.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at tavant.twms.interceptor.TrimListByElementIdInterceptor.intercept(TrimListByElementIdInterceptor.java:44)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at tavant.twms.interceptor.TwmsFileUploadInterceptor.intercept(TwmsFileUploadInterceptor.java:44)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at tavant.twms.interceptor.BUSpecificLabelsLocaleInterceptor.intercept(BUSpecificLabelsLocaleInterceptor.java:109)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at tavant.twms.filter.ResponseTimeLogFilter.doFilter(ResponseTimeLogFilter.java:90)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:143)
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at tavant.twms.filter.SelectedBusinessUnitsFilter.doFilter(SelectedBusinessUnitsFilter.java:39)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
    at java.lang.Thread.run(Thread.java:662)

总之,我们在我的所有生产服务器中都设置了以下系统属性,但是我们仍然面临这个问题

user.language: en
user.country: US
user.timezone: America/Los_Angeles
任何帮助都将不胜感激


感谢Naveen在建立与数据库的连接时,Oracle JDBC精简驱动程序会查找默认的Java语言环境,检索语言和区域,并执行ALTER会话来设置NLS_语言和NLS_区域

这对我来说非常有效:我是法国人,住在巴黎,当我连接到美国的数据库时,我会自动收到法语的错误消息,这是因为我的语言环境设置为法语/法语

瘦驱动程序调用
Locale.getDefault(Category.FORMAT)
并从中找出语言和区域

我试图通过执行以下操作将我的语言环境设置为
es/419
:Locale.setDefault(新语言环境(“es”,“419”)我可以看到驱动程序执行以下查询:

ALTER SESSION SET TIME\u ZONE='欧洲/巴黎'NLS\u语言='拉丁美洲西班牙语'NLS\u TERRITORY='美洲'

(我们可以忽略时区)

在我的设置中,这个接缝可以很好地工作。如果在你的语言中没有,也许你可以尝试另一种语言。启动Java运行时,可以通过设置
user.language
user.country
系统属性来更改默认语言

例如,如果我这样做:

java-Duser.language=es-Duser.country=es…

然后,驱动程序在连接时执行以下查询:

ALTER SESSION SET TIME\u ZONE='Europe/Paris'NLS\u LANGUAGE='SPANISH'NLS\u TERRITORY='SPANISH'

es\u es
一定很常见,如果它在您的环境中不起作用,我会感到震惊

我知道您使用JBOSS,所以应该在启动JBOSS的命令行中设置这两个
-D
系统属性。请注意,如果您愿意,也可以通过调用
Locale.setDefault
在代码中实现相同的功能


祝你好运

你为什么还要修改会话?Deinum-我们没有修改会话。来自应用程序的Hibernate/JDBC正在对其进行内部更改。我假设一个服务器应用程序有一个连接池,因此不应该有任何改变。为什么get connect会改变会话的语言环境?我想说,目前信息太少(例如,添加完整的堆栈跟踪)。还有,Spring和/或hibernate与此有什么关系?如果这是如此重要,添加一些配置。感谢回复Deinum!。我已经用全部细节更新了堆栈跟踪。该问题是零星的,start首先来自EMEA(欧洲)地区,影响所有其他地区。我们与Oracle支持团队进行了多次跟进,他们表示这是从应用程序方面进行的。第一个日志也这么说。在我之前的评论中提供的链接中,我发现JDBC/Hibernate在连接之前会改变会话。顺便说一句,我们的服务器位于PDT区域。我不明白为什么会发生这种情况,特别是如果您在服务器端配置了连接池。添加一些配置/代码,因为目前信息太少。非常感谢@Jean的详细解释。我从oracle支持团队获得了语言和国家/地区列表,我发现这些国家/地区存在问题。**ALTER SESSION SET TIME_ZONE='美洲/洛杉矶NLS_语言='拉丁美洲西班牙语'NLS_TERRITORY='老挝'**。从甲骨文的角度来看,没有所谓的老挝领土。我将尝试您的建议并保持联系。仅供参考,它使用
-Duser.language=es-Duser.country=LA
进行了尝试,并在我的12.1.0.2数据库上成功地执行了
更改会话设置时间\u ZONE='Europe/Paris'NLS_language='Latina AMERICAN SPANISH'NLS_TERRITORY='LAOS'
。在你的情况下,一个解决办法是用一个有效的方法来改变领土。谢谢你,简。我正在检查如何设置区域,如果您有任何好的方法,请让我知道。系统属性
-Duser.country
设置区域设置中的国家(例如
java-Duser.country=LA…
用于老挝),然后由驱动程序使用该区域设置NLS_区域。这里有一个列表:Jean,我已经检查了我的生产服务器,我可以看到上面所有的值都已经设置好了,我们仍然会遇到这个问题。