症状:数据库是open状态,也可以从sqlplus连接到数据库,从web连接数据库时,通过网址:1158/em/console,发现Database Instance, Listener, Agent Connect to Instance都是正常的,但是点击‘Database’不能进入到登陆页面,页面上有错误提示“Enterprise Manager is not able to connect to the database instance. The state of the components are listed below.”,下图例:
解决方法:
1)通过sqlplus连接入数据库,查看下面几个用户的状态SYSTEM,SYSMAN,MGMT_VIEW,DBSNMP,SYS,它们应该都是open的,造成上面的问题是有用户为expired或locked。
sql>select username,account_status from dba_users where username=’SYSTEM’;
sql>select username,account_status from dba_users where username=’SYSMAN’;
sql>select username,account_status from dba_users where username=’MGMT_VIEW’;
sql>select username,account_status from dba_users where username=’DBSNMP’;
sql>select username,account_status from dba_users where username=’SYS’;
被lock的帐户通过命令sql>alter user username account unlock;来解锁。
被expired的帐户需要重置密码,对于dbsnmp,sysman帐户,重置密码比较麻烦,请按下列方法操作。
重置dbsnmp帐户密码:
1.sql>alter user dbsnmp identified by dbsnmp;
2.找到targets.xml文件,通常在$Oracle_HOME\hostname_sid\sysman\emd目录下,修改下面的值:
<Property NAME=”password” VALUE=”” ENCRYPTED=”FALSE”/>
重起 dbconsole service.
重置sysman帐户密码:
1. sql>alter user sysman identified by sysman;
2. 修改 $ORACLE_HOME\hostname_sid\sysman\config\emoms.properties.将下面的两个参数修改一下,其中[Your encrypted password]
为当前设置的密码,明文的就可以了。
oracle.sysman.eml.mntr.emdRepPwd= [Your encrypted password]
oracle.sysman.eml.mntr.emdRepPwdEncrypted=False
Restart dbconsole service.
但是,有些用户会发现,这样同样解决不了问题,被锁定的账户解锁后马上又锁定了。造成这样问题的原因是因为修改账户sysman的密码,然而EM端未进行跟新导致,所以一打开EM,EM会按照旧密码疯狂的登录实例,,以致错误密码达到用户配置文件中的限制上线,而把用户锁了,解决方法是更改dbconsole中的sysman密码,修改步骤如下:
1 先关闭dbconsole :emctl stop dbconsole
2修改密码:emctl setpasspd dbconsole 把SYSMAN的最新密码更新到DBCONSOLE中
在DBCONSOLE的配置文件 :$ORACLE_HOME\hostname_instance_name\sysman\config\emoms.properties中,密码的项目是oracle.sysman.eml.mntr.emdRepPwdSeed=6685438242677443598,此时不能直接修改,只能使用上述命令来更新SYSMAN的密码
3 打开的并console:emctl start dbconsole
再次进入EM,应该就可以解决问题了