Thursday, October 13, 2011

Get "The database status is currently unavailable..." when opening OEM

when opening OEM, got this error message :
" The database status is currently unavailable. It is possible that the database is in mount or nomount state. Click 'Startup' to obtain the current status and open the database. If the database cannot be opened, click 'Perform Recovery' to perform an appropriate recovery operation."

first, check the database's status :
[~]$ srvctl status database -d database_name

if the instance is running, check if it's in open or mount state :
SQL>select status from v$instance;

if the status is OPEN, the database is fine.


One reason why the OEM cannot be opened is :
because the password of SYSMAN and DBSNMP are different from the password that created during installation.
And changing the password cannot just use the ALTER command.

therefore, SYSMAN and DBSNMP password changes can be done by using the ALTER command and change the configuration file.

Change SYSMAN's password :
  • turn off all the OMS
[~]$ emctl stop dbconsole                                                            
  • make sure that the OMS are turned off
[~]$ emctl status agent                                                                
  • connect to the database, change SYSMAN's password using ALTER command
SQL> alter user SYSMAN identified by [new_password];               
  • check if SYSMAN is unlocked by login itnto database. if we got ORA-28000 : account is locked, then we have to unlock it
  SQL> alter user SYSMAN account unlock;                                      
  • after we are sure that SYSMAN is unlocked, then we'll edit emoms.properties file in $ORACLE_HOME/[HOST]_[SID]/sysman/config directory. Don't forget to copy the original file as backup.
  • Parameter that must be changed are :
  1. oracle.sysman.eml.mntr.emdRepPwd=[new_password]
  2. oracle.sysman.eml.mntr.emdRepPwdEncrypted=FALSE
no need to worry because the password has not been encrypted,     because once DBConsole and Oracle Agent on the restart, the password will be immediately encrypted and oracle.sysman.eml.mntr.emdRepPwdEncrypted will return to TRUE.
  • startup DBConsole
[~]$ emctl start dbconsole
                                                        
then, we have to change the DBSNMP's password :
the procedures are similar with SYSMAN's changing password, but file that has to be edited is different.
here, we have to edit targets.xml file which is placed in $ORACLE_HOME/[HOST]_[SID]/sysman/emd directory. Don't forget to make a copy as backup.
Parameters that have to be edited are :
Property NAME="password" VALUE="[encrypted password]" ENCRYPTED="TRUE"

change [encrypted password] with new password and TRUE into FALSE. Password is encrypted and value of ENCRYPTED will return to TRUE after DBConsole and Oracle Agent are restarted.

startup the DBConsole then we can access the OEM...