1/9用友股份-LE支持服务业务本部技术方案--《某项目master节点宕机问题分析及解决案例》建立日期:2014-01-20修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2014-00022/9文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围发布人姓名所属部门发布时间内部员工伙伴客户日期作者所属部门邮件地址版本2014-01-20郜耿智技术支持部V1.0版本领域模块备注3/9目录某项目master节点宕机问题分析及解决案例......................................................4一、问题描述............................................................................................................4二、问题分析............................................................................................................4三、结论....................................................................................................................8四、解决方案............................................................................................................8五、后续建议............................................................................................................94/9某项目master节点宕机问题分析及解决案例注:此解决方案涉及数据库操作或代码操作,请由计算机专业人士操作,并且操作前请做好备份工作!一、问题描述nc无法使用,通过Nmc监控可以发现master节点状态是starting,且持续为starting一直无法正常启动二、问题分析StartServer.log*************EndDisplayCurrentEnvironment*************[14-1-615:58:45:259CST]0000000aManagerAdminITRAS0017I:启动跟踪状态是*=info。[14-1-615:58:45:305CST]0000000aAdminToolAADMU0128I:正在启动具有AppSrv01概要文件的工具5/9[14-1-615:58:45:306CST]0000000aAdminToolAADMU3100I:正在从服务器读取配置:master[14-1-615:58:47:065CST]0000000aAdminToolAADMU3200I:服务器已启动。等待初始化状态。[14-1-616:00:00:016CST]0000000aAdminToolAADMU3000I:为电子商务开放服务器master;进程标识为24077StartServer.log可以看到master节点正常启动,故推测问题可能不出在WAS服务器,查看system日志进一步分析SystemOut.log[14-1-615:47:25:904GMT+08:00]00000085ExceptionUtilECNTR0020E:在调用bean“BeanId(nc50#nc.itf.uap.mw.MwBizEJB.jar#nc.itf.uap.mw.MwBizEJB,null)”上的方法“createOidBase_RequiresNew”期间,EJB抛出意外(未声明的)异常。异常数据:java.lang.RuntimeException:getoiderror,theerrorisgetdatasourcedesignerror,can'tconnecttodatabaseatnc.bp.impl.uap.oid.DefaultOidBaseCreator.createOidBase(DefaultOidBaseCreator.java:142)atnc.impl.uap.OidGeneratorBS.createOidBase_RequiresNew(OidGeneratorBS.java:30)atnc.itf.uap.mw.MwBizEJBEjbBean.createOidBase_RequiresNew(MwBizEJBEjbBean.java:76)atnc.itf.uap.mw.EJSLocalStatelessnc_itf_uap_mw_MwBizEJB_f98e92a8.createOidBase_RequiresNew(UnknownSource)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)6/9atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:56)atnc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:34)at$Proxy17.createOidBase_RequiresNew(UnknownSource)atnc.bs.uap.oid.OidGenerator.nextOid(OidGenerator.java:130)atnc.bs.uap.oid.OidGenerator.nextOid(OidGenerator.java:156)atnc.bs.uap.oid.OidGenerator.nextOid(OidGenerator.java:73)atnc.bs.dbcache.ServerTableVersionManager.insertATableVersion(ServerTableVersionManager.java:382)atnc.bs.dbcache.ServerTableVersionManager.getVersion(ServerTableVersionManager.java:170)atnc.bs.dbcache.ServerTableVersionManager.getVersions(ServerTableVersionManager.java:188)atnc.bs.dbcache.impl.CacheVersionBS.getOutDateVersions(CacheVersionBS.java:101)atnc.itf.uap.mw.MwBizEJBEjbBean.getOutDateVersions(MwBizEJBEjbBean.java:894)atnc.itf.uap.mw.EJSLocalStatelessnc_itf_uap_mw_MwBizEJB_f98e92a8.getOutDateVers[14-1-615:47:38:460GMT+08:00]00000086ExceptionUtilECNTR0020E:在调用bean“BeanId(nc50#nc.itf.uap.mw.MwBizEJB.jar#nc.itf.uap.mw.MwBizEJB,null)”上的方法“createOidBase_RequiresNew”期间,EJB抛出意外(未声明的)7/9异常。异常数据:java.lang.RuntimeException:getoiderror,theerrorisORA-00257:archivererror.Connectinternalonly,untilfreed.DSRA0010E:SQL状态=64000,错误代码=257atnc.bp.impl.uap.oid.DefaultOidBaseCreator.createOidBase(DefaultOidBaseCreator.java:142)atnc.impl.uap.OidGeneratorBS.createOidBase_RequiresNew(OidGeneratorBS.java:30)atnc.itf.uap.mw.MwBizEJBEjbBean.createOidBase_RequiresNew(MwBizEJBEjbBean.java:76)SystemOut.log可以看到master节点正在工作,但与数据库服务器进行交互时,无法获取数据库链接,推测问题出在数据库服务器,查看SystemErr.log日志进一步验证SystemErr.log[14-1-615:47:40:169GMT+08:00]000000c5SystemErrRatcom.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)[14-1-615:47:40:169GMT+08:00]000000c5SystemErrRatcom.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)[14-1-615:47:40:169GMT+08:00]000000c5SystemErrRCausedby:java.sql.SQLException:ORA-00257:archivererror.Connectinternalonly,untilfreed.DSRA0010E:SQL状态=64000,错误代码=257atoracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)atoracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)atoracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)atoracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:427)atoracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)atoracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)atoracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:390)atoracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:363)8/9atoracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:536)atoracle.jdbc.driver.T4CConnection.(T4CConnection.java:228)atoracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)atoracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)atoracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)atoracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)atoracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:139)atoracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:88)atoracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:70)SystemErr.log可以看到问题出在数据库服务器,归档日志已满,导致数据库无法正常对外提供服务三、结论此问题发生的原因为归档日志满,导致数据库无法连接,WAS启动后,因数据库无法连接,导致master节点无法正常工作,而NMC监控到master不能正常工作,即认为是master没有正常启动成功四、解决方案清理归档日志即可。9/9五、后续建议建议修改归档日志备份策略,数据库服务器只需保留一段时间的归档日志即可。