Friday, September 2, 2016

Error: ORA-28001: the password expried (OracleDB Schema Password)

Symptoms: 
Oracle Hyperion Financial Management, managed services stopping immediately after starting

Logs: 
C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\HFMWeb0\logs\HFMWeb0
####<Sep 2, 2016 10:14:00 AM IST> <Error> <Deployer> <WIN-2GMS0JCRA42> <HFMWeb0> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1472791440187> <BEA-149205> <Failed to initialize the application 'hfm_datasource' due to error weblogic.application.ModuleException: .
weblogic.application.ModuleException:
    at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:327)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:518)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:47)
    at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:649)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
    at weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:44)
    at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
    at weblogic.deploy.internal.targetserver.SystemResourceDeployment.prepare(SystemResourceDeployment.java:55)
    at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:40)
    at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:191)
    at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:22)
    at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
    at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:166)
    at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
    at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
    at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
    at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: weblogic.common.ResourceException: weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: ORA-28001: the password has expired

Solution 1:
Shutdown Hyperion Services make changes using SQL plus and then restart services.

SQL> connect sys@HYPDB as sysdba
(Note: Your database name might be different)
(e.g. Database: HYPDB, HFM Schema: HFMDB)

SQL> select username, account_status from dba_users;
(Check is user account is expired/locked)
...
USERNAME                       ACCOUNT_STATUS
------------------------------     --------------------------------
HFMDB                              EXPIRED & LOCKED
FDMEEDB                         EXPIRED & LOCKED
HSSDB                               EXPIRED & LOCKED
EPMADB                           EXPIRED & LOCKED
...

SQL> alter user HFMDB identified by Password123;
(Update expired password)

SQL> alter user HFMDB account unlock;
(Unlock locked account)

Solution 2:
Set schema to never expire
Ref: https://stackoverflow.com/questions/1095871/how-do-i-turn-off-oracle-password-expiration#6777079

SQL> select profile, username from DBA_USERS;
(Note the profile name for the schema. My case its DEFAULT)

SQL> alter profile DEFAULT limit password_life_time UNLIMITED; 

SQL> select resource_name,limit from dba_profiles where profile='DEFAULT';

(Double check if change is made)
(Note schema will still show expired. So follow Solution 1 last two steps)

No comments:

Post a Comment