1. 程式人生 > 實用技巧 >Oracle使用者密碼過期和使用者被鎖的解決方法

Oracle使用者密碼過期和使用者被鎖的解決方法

產生原因:

1.已超出設定的密碼有效期:

在oracle11g中預設在default概要檔案中設定了“PASSWORD_LIFE_TIME=180天”所導致。

2.登陸過的錯誤次數超出限制被鎖:

在oracle11g中預設在default概要檔案中設定了“FAILED_LOGIN_ATTEMPTS=10次”,當輸入密碼錯誤次數達到設定值將導致此問題。

解決辦法:

針對原因1--->

1、檢視使用者的proifle是哪個,一般是default:

1 sql>SELECT username,PROFILE FROM dba_users;

2、檢視指定概要檔案(如default)的密碼有效期設定:

1 sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

3、將密碼有效期由預設的180天修改成“無限制”:

1 sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

備註:

修改之後不需要重啟動資料庫,會立即生效;

修改後,還沒有被提示ORA-28002警告的帳戶不會再碰到同樣的提示;

已經被提示的帳戶

必須再改一次密碼,舉例如下:

1 2 $sqlplus / as sysdba sql> alter user smsc identified by <原來的密碼> ----不用換新密碼

oracle11g啟動引數resource_limit無論設定為false還是true,密碼有效期都是生效的,所以必須通過以上方式進行修改。以上的帳戶名請根據實際使用的帳戶名更改。

針對原因2--->

1、檢視使用者的proifle是哪個,一般是default:

1 sql>SELECT username,PROFILE
FROM dba_users;

2、檢視指定概要檔案(如default)的密碼有效期設定:

1 sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';

3、將嘗試登入失敗次數由預設的10次修改成“無限制”:

1 sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

4、修改後,還沒有被提示ORA-28000警告的使用者不會再碰到同樣的提示;

已經被鎖定的帳戶必須解除鎖定,舉例如下:

1 2 $sqlplus / as sysdba sql> alter user smsc identified by oracle account unlock;

5、修改後default profile應該如下:

1 sql> select * from dba_profiles WHERE dba_profiles.profile='DEFAULT';

********************************************************************************************************

備註:修改之後不需要重啟動資料庫,會立即生效;

如果出現ORA-28000 the account is locked.錯誤

1 sql>alter user 使用者名稱 account unlock;