ORA-28001: the password has expired (DBD ERROR: OCISessionBegin)解決辦法

問題原因

造成這個問題的主要原因是因爲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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章