問題原因
造成這個問題的主要原因是因爲DBSNMP 、SYSMAN用戶密碼已經過期。
這個問題是由於Oracle 11G的新特性所致, Oracle 11G創建用戶時缺省密碼過期限制是180天, 如果超過180天用戶密碼未做修改則該用戶無法登錄。可通過SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'語句查詢密碼的有效期設置,LIMIT字段是密碼有效天數。
在密碼將要過期或已經過期時可通過ALTER USER 用戶名 IDENTIFIED BY 密碼 ;語句進行修改密碼,密碼修改後該用戶可正常連接數據庫。長久對應可通過ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED語句將口令有效期默認值180天修改成“無限制”。出於數據庫安全性考慮,不建議將PASSWORD_LIFE_TIME值設置成UNLIMITED,建議客戶定期修改數據庫用戶口令。
方法:
可以使用sys以管理員的身份登錄數據庫,然後執行select username,account_status from dba_users;語句查詢用戶狀態,可以發現有如下兩句:
DBSNMP EXPIRED
SYSMAN EXPIRED
把這倆用戶、密碼修改了就行。
具體操作:
本機使用sqlplus登陸
sqlplus / as sysdba
SQL> alter user sysman identified by sys123;
用戶已更改。
SQL> alter user dbsnmp identified by sys123;
用戶已更改。
重啓em dbconsole 登陸
但是又發現dbsnmp和sysman帳號被鎖定,
解鎖:ALTER USER 用戶名 ACCOUNT UNLOCK;
解鎖後,只要運行oem,馬上這兩個賬號又被鎖定。
原因:
dbsnmp和sysman這兩個用戶和oem緊密相關,dbsnmp用戶啓動oracle智能代理,用於收集oracle系統運行狀態的相關數據,sysman是oem的超級管理員。如果配置了oem後,又使用alter user <用戶名> identified by <新口令>;修改了這兩用戶的口令,就會出現dbsnmp 和sysman "LOCKED(TIMED)". 的情況。
解決方法:
還必須同步修改oem中記錄的dbsnmp和sysman用戶的口令。
$emca -config dbcontrol db
根據提示修改sysman和dbsnmp的口令即可。
其中有輸入數據庫SID
命令:select instance_name from V$instance;