数据库ORA-02396错误
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
故障描述:
7月28日中午准生产环境升级后,流程总线出现少数流程实例处于正常处理中,没有生成下一个环节。
处理过程:
1、晚上流程总线重新进行发布,重打了应用工程与IOM_EAR.EAR工程,结果第二天(7.29)该问题还是存在。
2、7.29号晚上重启服务,只开启132.228.125.1这台机上的3个server,停掉了其它三台主机的9个servere,7月30号该问题依然存在。
3、7、30分析了132.228.125.1这台主机上应用的日志。
结果发现报错信息如下:
SystemOut.log中有如下错误:
The Oracle Error code is : 1012
The Oracle Error message is: Internal XA Error
The cause is : null。
[12-7-30 16:27:15:271 CST] 00000108 WSRdbXaResour E DSRA0302E: 发生 XAException。
错误代码为:XAER_RMERR (-3)。
异常为:<null>
[12-7-30 16:27:15:273 CST] 00000108 XATransaction E J2CA0027E: 当调用 start(在数据库jdbc/UOSFlowTxDataSource 的 XA 资源适配器上,事务标识 {XidImpl: formatId(57415344), gtrid_length(36), bqual_length(54),
data(00000138d6ff0ba70000000100000c5afd3d519f938849503288c13d8aa46b8c9463dafe00000138d 6ff0ba70000000100000c5afd3d519f938849503288c13d8aa46b8c9463dafe00000001000000000000000 0000000000001)} 中)时发生异常:oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1120)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:249)
at
com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:1417) at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1467)
at com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:145)
at
com.ibm.ws.Transaction.JTA.RegisteredResources.startRes(RegisteredResources.java:1240) at
com.ibm.ws.Transaction.JTA.RegisteredResources.enlistResource(RegisteredResources.java :648)
at
com.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource(TransactionImpl.java:3294) at com.ibm.ws.Transaction.JTA.TranManagerSet.enlist(TranManagerSet.java:405)
at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:693)
at zyEnlist(ConnectionManager.java:1909)
at
zyEnlist(WSRdbManagedConnectionI mpl.java:2219)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnectio n.java:643)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2083
)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2038 )
at
mandQueueDAOImpl.findCommandQueueBy
Id(CommandQueueDAOImpl.java:263)
at
mandUtilities.setCommandQueueExceptionState(CommandU tilities.java:565)
at
mandUtilities.execCommand(CommandUtilities.java:367) at
com.zterc.uos.workflow.engine.WorkflowEngineMDBBean.onMessage(WorkflowEngineMDBBean.ja va:88)
at
com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.ja va:1014)
at
com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:747) at $Proxy0.onMessage(Unknown Source)
at
com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvokerImpl.invokeEndpoint(JmsJcaEndpointI nvokerImpl.java:201)
at
com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:788) at
com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSinglePro cessListener.java:585)
at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
flowbus.log中报错如下:
<2012-07-31 10:09:13> <Default : 3>
mandUtilities.execCommand(CommandUtilities.java:386) <ERROR> 异常处理未结束异常:ORA-02396: exceeded maximum idle time, please connect again
<2012-07-31 10:09:13> <Default : 3>
com.zterc.uos.workflow.engine.WorkflowEngineMDBBean.onMessage(WorkflowEngineMDBBean.ja va:92)
<ERROR> 在命令执行过程中发生异常,异常信息如下:enlist: caught Exception
ORA-02396: exceeded maximum idle time, please connect again根据日志分析由于连接超过最大空闲时间,数据库连接失败,导致JMS中
的消息执行失败,捕获异常后,也不能更新流程实例的状态,导致流程状态正常,又没有生成下一个环节的工单。
查询数据库相关参数:
select * from dba_profiles a where a.resource_name = 'IDLE_TIME';
DEFAULT I DLE_TIME KERNEL UNLIMITED
IDLETIME IDLE_TIME KERNEL 10
对比测试环节,增加一条记录IDLETIME,时间为10分钟,最近几天PL/SQL工具连接一阵子不使用就会失效,可以确定是最近几天有人调整了数据库的这个参数。
4、7.31号将10分钟调整为UNLIMITED,到今天晚上为止,没有再发现该问题。
希望以后有人修改了数据库的参数,最好记录一下,如果是局方维护人修改参数也应该通知厂商。
不然这种出现问题后,定位问题很曲折!。