Wednesday, November 12, 2014

Maximo doesn't start, SystemOut.log ORA-28001

Problem:
Maximo doesn't start. The internet browser gives a HTTP 500 Internal Server Error


I use a Maximo 7.5.0.6 environment with a Oracle 11G database on Windows Server 2012.


Solution:

First check the SystemOut.log for the cause. Usually located in  \ibm\WebSphere\AppServer\profiles\ctgAppSrv01\logs\MXServer


[11/12/14 9:03:53:171 CET] 00000011 servlet       I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [MAXIMO] [/mbo] [ReportEngineStartupServlet]: Initialization successful.
[11/12/14 9:04:01:346 CET] 00000011 SystemOut     O 12 Nov 2014 09:04:01:335 [ERROR] [] [] BMXAA6421E - The system could not connect to the JDBC source: jdbc:oracle:thin:@localhost.:1521:ctginst1ORA-28001: the password has expired

[11/12/14 9:04:01:346 CET] 00000011 SystemOut     O 12 Nov 2014 09:04:01:346 [ERROR] [] [] BMXAA6418E - There was an error reloading the MAXPROP cache: access#DBConnectFail
[11/12/14 9:04:01:346 CET] 00000011 SystemOut     O 12 Nov 2014 09:04:01:346 [ERROR] [] [] BMXAA6538E - Failed to initialize MAXIMO business object services.
psdi.util.MXSystemException: access#DBConnectFail
at psdi.server.MaxPropCache.reloadCache(MaxPropCache.java:586)
at psdi.server.MaxPropCache.reload(MaxPropCache.java:251)
at psdi.server.MXServer.start(MXServer.java:3173)
at psdi.servlet.MAXIMOStartupServlet.init(MAXIMOStartupServlet.java:70)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:169)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.initialize(ServletWrapper.java:1809)
at com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor.createServletWrapper(WebExtensionProcessor.java:98)
at com.ibm.ws.webcontainer.webapp.WebApp.initializeTargetMappings(WebApp.java:704)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:435)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:304)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:100)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:166)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:731)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:616)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1122)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1319)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:610)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:944)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:725)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2046)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:439)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:382)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$300(CompositionUnitMgrImpl.java:110)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:949)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
Caused by: java.sql.SQLException: ORA-28001: the password has expired


The error is clear: ORA-28001: the password has expired.
Since this is a Oracle error, the expired password must that of the database schema for Maximo.

To solve this problem we need to reset the Maximo database password in Oracle. I log in to the database with SQL developer as the sys user.

To reset the password you can run the follwoing statement:

ALTER USER maximo IDENTIFIED BY maximo;

This will reset the password for the maxmo user to 'maximo'

But I do not want the password to expire again. So I want to set the profile to never expire. First I need to know what profiles there are;

select profile from dba_users where username = 'SYSTEM';



Then on the profile I can set the password to never expire with the following statement;

alter profile default limit password_life_time unlimited;

After you have set this, you need to reset the password again, so the new password will use the new rules.

ALTER USER maximo IDENTIFIED BY maximo;

GNZ.