ORACLE賬戶提示EXPIRED(GRACE)問題解決

記錄每一次錯誤發表於2018-10-16

最近一個奇怪現象為賬戶為EXPIRED(GRACE),查閱資料得知這是oracle11g安全的一個更新,類似系統賬號過期一樣。

1)查詢使用者狀態為

col username for a20 

col account_status for a20

SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;


USERNAME                         ACCOUNT_STATUS             LOCK_DATE            EXPIRY_DATE

-------------------- -------------------- -------------- --------------

CBD                                EXPIRED(GRACE)                                            04-2月 -13

1)查詢表dba_profiles

SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME LIKE 'PASSWORD%';


PROFILE                            RESOURCE_NAME                                        RESOURCE LIMIT

-------------------- -------------------------------- -------- ----------------------------------------

DEFAULT                            PASSWORD_LIFE_TIME                             PASSWORD 180

DEFAULT                            PASSWORD_REUSE_TIME                            PASSWORD UNLIMITED

DEFAULT                            PASSWORD_REUSE_MAX                             PASSWORD UNLIMITED

DEFAULT                            PASSWORD_VERIFY_FUNCTION                 PASSWORD NULL

DEFAULT                            PASSWORD_LOCK_TIME                             PASSWORD 1

DEFAULT                            PASSWORD_GRACE_TIME                            PASSWORD 7


6 rows selected.


SQL>

解釋如下:

FAILED_LOGIN_ATTEMPTS 整數設定登入到Oracle 資料庫時可以失敗的次數。一旦某使用者嘗試登入資料庫的達到該值時,該使用者的帳戶就被鎖定,只能由DBA能解鎖。

PASSWORD_LIFE_TIME        設定口令的有效時間(天數),一旦超過這一時間,必須重新設口令。預設為UNLIMITED.

PASSWORD_REUSE_TIME     許多系統不許使用者重新啟用過去用過的口令。該資源項設定了一個失效口令要經過多少天,使用者才可以重新使用該口令。預設為UNLIMITED.

PASSWORD_REUSE_MAX        重新啟用一個先前用過的口令前必須對該口令進行重新設定的次數(重複用的次數)。

PASSWORD_LOCK_TIME        設定帳戶被鎖定的天數(當登入失敗達到FAILED_LOGIN_ATTEMPTS時)。

PASSWORD_GRACE_TIME     設定在口令失效前,給予的重新設該口令的寬限天。當口令失效之後回,在登入時會出現警告資訊顯示該天數。如果沒有在寬限天內修改口令,口令將失效。                        

PASSWORD_VERITY_FUNCTION 該資源項允許呼叫一個PL/SQL 來驗證口令。Oracle公司已提供該應用 的指令碼,但是隻要願意的話,使用者可以制定自己的驗證指令碼。該引數的設定就是PL/SQL函式的名稱。預設為NULL.

2)預設有效期為180天

SQL> select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';


PROFILE                                                        RESOURCE_NAME                                                                                RESOURCE LIMIT

-------------------- -------------------------------- -------- ----------------------------------------

DEFAULT                                                        PASSWORD_LIFE_TIME                                                         PASSWORD 180


SQL>

2)預設寬限時間為7天

SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_GRACE_TIME';


PROFILE                            RESOURCE_NAME                RESOURCE_TYPE        LIMIT

-------------------- -------------------- ---------------- --------------------

DEFAULT                            PASSWORD_GRACE_TIME    PASSWORD                 7

SQL>

3)修改預設有效期天數為無限

SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;


使用者已更改。

SQL>

4)修改預設寬限期限

SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;

使用者已更改。

SQL>

5)修改使用者密碼為原來密碼(假設當前密碼為CBD_abc)

SQL>ALTER USER CBS IDENTIFIED BY CBD_123;


使用者已更改。

SQL>

6)檢視使用者當期那狀態

SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;


USERNAME                         ACCOUNT_STATUS             LOCK_DATE            EXPIRY_DATE

-------------------- -------------------- -------------- --------------

cbd                                    OPEN


SQL>

到此,賬戶過期問題解決。

關於賬號狀態問題補充

1)查詢使用者概要檔案情況

SQL> SELECT username,PROFILE FROM dba_users where username like 'CBD%';


USERNAME                                    PROFILE

------------------------- --------------------

    CBD                                         DEFAULT


SQL>

2)賬號有多少中狀態?

SQL> select * from user_astatus_map;


     STATUS# STATUS

---------- ----------------------------------------------------------------

                 0 OPEN

                 1 EXPIRED

                 2 EXPIRED(GRACE)

                 4 LOCKED(TIMED)

                 8 LOCKED

                 5 EXPIRED & LOCKED(TIMED)

                 6 EXPIRED(GRACE) & LOCKED(TIMED)

                 9 EXPIRED & LOCKED

                10 EXPIRED(GRACE) & LOCKED

10類狀態說明:

五種基本狀態可分為三類:

正常狀態;

鎖定狀態;

密碼過期狀態。

1、OPEN狀態表示使用者處於正常狀態。

2、LOCKED和LOCKED(TIMED)表示使用者被鎖定狀態。有如下兩種情況:

DBA顯式的透過SQL語句對使用者進行鎖定;

被動的鎖定,預設情況下如果密碼輸入錯誤超過10次鎖定;

該限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可檢視檢視DBA_PROFILES。

DBA顯式鎖定使用者LOCKED

  alter user [username] account lock;

輸入10次錯誤密碼後被動鎖定LOCKED(TIMED)

  這個限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,該資訊可以透過DBA_PROFILES檢視查詢


3、EXPIRED和EXPIRED(GRACE)表示使用者密碼過期狀態。

  修改PROFILE中的PASSWORD_LIFE_TIME實現密碼是否過期

    alter profile default limit password_life_time unlimited;

  密碼過期後也可修改PROFILE中的PASSWORD_GRACE_TIME控制使用的天數:

    alter profile default limit password_grece_time 180;

  對於密碼過期的使用者OPEN:a

    alter user [username] identified by <password> account unlock;


推薦帖子:

http://blog.csdn.net/kai27ks/article/details/6270350

--------------------- 

作者:Onlineforeve 

來源:CSDN 

原文:https://blog.csdn.net/jackenjun/article/details/8901955?utm_source=copy 

版權宣告:本文為博主原創文章,轉載請附上博文連結!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2216512/,如需轉載,請註明出處,否則將追究法律責任。

相關文章