Wednesday, March 31, 2010

Oracle Enterprise Manager Console – Password Expired

Today I got the following message while trying to access the oracle enterprise console.
Failed to connect to database instance: ORA-28001: the password has expired (DBD ERROR: OCISessionBegin).
The log was draining the following errors.

[ApplicationServerThread-5] ERROR eml.OMSHandshake processFailure.806 - OMSHandshake failed.
java.sql.SQLException: ORA-28001: the password has expired
at oracle.jdbc.driver.DatabaseError.throwSqlException(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4CTTIoer.processError(
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(
at oracle.jdbc.driver.T4CConnection.logon(
at oracle.jdbc.driver.PhysicalConnection.(

To fix the issue
* Stop enterprise manager -> emctl stop dbconsole
* login to sqlplus as sysdba -> sqlplus "/as sysdba"
* reset sysman password -> alter user sysman identified by <the new password> ;
* reset dbsnmp password -> alter user dbsnmp identified by <the new password> ;
* find the file -> find <ORACLE_HOME> -name
* select the file in ORACLE_HOME/HOST_SID/sysman/config
* Change sysman password in -> oracle.sysman.eml.mntr.emdRepPwd=New Password
* Change encrypted to false in -> oracle.sysman.eml.mntr.emdRepPwdEncrypted=FALSE
* Find the targets.xml file in ORACLE_HOME/HOST_SID/sysman/emd
* Change dbsnmp password in targets.xml and set encrypted to FALSE -> <Property NAME=”password” VALUE=”<New Password>” ENCRYPTED=”FALSE”/>
* Restart the enterprise console -> emsctl start dbconsole

Oracle 11g sets password expiry by default. This is the reason behind getting the password expiry messages.
To stop this happening in the future do the following.
* Login to sqlplus as sysdba -> sqlplus "/as sysdba"

Steps to reconfigure the DB Control in case of a host name change etc.
set oracle_sid=YourInstanceName
emctl stop dbconsole
emca -deconfig dbcontrol db
emca -repos recreate
emca -config dbcontrol db
emca -reconfig ports -DBCONTROL_HTTP_PORT 80 (This port change is optional)

References -

Thursday, March 4, 2010

Fixing JAXB LinkageError in JBoss with JDK 1.6

Struggled a bit to sort out the following issue which popped while trying to deploy a web service in Jboss booted with JDK 1.6

java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/liferay_portal/jboss-tomcat-4.2.3/server/default/tmp/deploy/tmp3673jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See at com.sun.xml.bind.v2.model.impl.ModelBuilder.( at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet( at com.sun.xml.bind.v2.runtime.JAXBContextImpl.( at com.sun.xml.bind.v2.ContextFactory.createContext( at com.sun.xml.bind.api.JAXBRIContext.newInstance(

To fix this need to copy the following jars from ${JBOSS_HOME}/client to ${JBOSS_HOME}/lib/endorsed:

* jaxb-api.jar
* jboss-jaxrpc.jar
* jboss-jaxws.jar
* jboss-jaxws-ext.jar (applies to 2.0.2 +)
* jboss-saaj.jar

Also if the following error occur when invoking the service .

12:50:28,718 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at javax.xml.soap.SOAPMessage.setProperty(

Copy the above jars plus the following from ${JBOSS_HOME}/lib to ${JBOSS_HOME}/lib/endorsed: