【密碼】Oracle用戶密碼系列

密碼Oracle用戶密碼系列html

1.1  BLOG文檔結構圖

wpsDDB1.tmp 

1.2  前言部分

1.2.1  導讀和注意事項

各位技術愛好者,看完本文後,你能夠掌握以下的技能,也能夠學到一些其它你所不知道的知識,~O(∩_∩)O~:sql

① 用戶的9種狀態含義(重點)數據庫

② 如何解鎖帳戶安全

③ 如何修改密碼無效狀態微信

④ 如何獲取密碼的密文,如何利用密文修改用戶的密碼(重點)網絡

⑤ 如何查詢失敗的登錄次數oracle

⑥ 11g 密碼大小寫問題app

⑦ 11g 密碼延遲驗證less

⑧ 密碼複雜性校驗ide

 

Tips:

① 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和微信公衆號(xiaomaimiaolhr)上有同步更新。

② 文章中用到的全部代碼、相關軟件、相關資料及本文的pdf版本都請前往小麥苗的雲盤下載,小麥苗的雲盤地址見:http://blog.itpub.net/26736162/viewspace-1624453/。

③ 若網頁文章代碼格式有錯亂,請下載pdf格式的文檔來閱讀。

④ 在本篇BLOG中,代碼輸出部分通常放在一行一列的表格中。

本文有錯誤或不完善的地方請你們多多指正,您的批評指正是我寫做的最大動力。

 

1.2.2  本文簡介

客戶的一個帳戶密碼過時了,可是客戶設置了永不過時,問到我爲何。我當時以爲設置了永不過時那確定是生效的,只是這個部分的內容忘得差很少了,當時還想到多是resource_limit這個參數沒有設置爲TRUE的緣故,後來查了官方文檔才知道並非這個緣由。因而下決心把這部分的內容系統學習一下,本身總結的內容分享給你們。

1.3  使用profile管理用戶口令

Oracle用戶的狀態是由密碼來決定的,而Oracle中的密碼是由PROFILE來配置的。PROFILE是口令限制、資源限制的命令集合。當創建數據庫時,Oracle會自動創建名稱爲DEFAULT的PROFILE。當建立用戶而沒有指定PROFILE選項時,Oracle就會將DEFAULT分配給用戶。

經過以下的命令能夠查出與密碼相關的PROFILE的值:

 SELECT *

   FROM DBA_PROFILES D

  WHERE D.PROFILE = 'DEFAULT'

    AND (D.RESOURCE_NAME LIKE '%PASSWORD%' OR

        D.RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS');

wpsDDB2.tmp 

每一個參數的含義以下所示:

l FAILED_LOGIN_ATTEMPTS  設定登陸到Oracle數據庫時能夠失敗的次數。一旦某用戶嘗試登陸數據庫的達到該值時,該用戶的賬戶就被鎖定,只能由DBA能解鎖。

l PASSWORD_LIFE_TIME  設定口令的有效時間(天數),一旦超過這一時間,必須從新設口令。缺省爲UNLIMITED。

l PASSWORD_REUSE_TIME  許多系統不準用戶從新啓用過去用過的口令。該資源項設定了一個失效口令要通過多少天,用戶才能夠從新使用該口令,缺省爲UNLIMITED。

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

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

l PASSWORD_GRACE_TIME  設定在口令失效前,給予的從新設該口令的寬限天。當口令失效以後回,在登陸時會出現警告信息顯示該天數。若是沒有在寬限天內修改口令,口令將失效。

l PASSWORD_VERITY_FUNCTION  該資源項容許調用一個PL/SQL來驗證口令。Oracle已提供該應用的腳本,爲$ORACLE_HOME/rdbms/admin/utlpwdmg.sql。可是,用戶能夠制定本身的驗證腳本。該參數的設定就是PL/SQL函數的名稱,缺省爲NULL。

1.3.1  修改密碼爲永不過時

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,profile from dba_users where username = 'LHRSYS';

 

USERNAM ACCOUNT_STATUS                  EXPIRY_DATE         PROFILE

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

LHRSYS  OPEN                            2016-12-07 15:20:36 TESTPROFILE

 

SYS@lhrdb> alter user lhrsys password expire;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,profile from dba_users where username = 'LHRSYS';

 

USERNAM ACCOUNT_STATUS                  EXPIRY_DATE         PROFILE

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

LHRSYS  EXPIRED                         2016-12-02 16:36:24 TESTPROFILE

 

SYS@lhrdb> ALTER PROFILE TESTPROFILE LIMIT PASSWORD_LIFE_TIME UNLIMITED;

 

Profile altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,profile from dba_users where username = 'LHRSYS';

 

USERNAM ACCOUNT_STATUS                  EXPIRY_DATE         PROFILE

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

LHRSYS  EXPIRED                         2016-12-02 16:36:24 TESTPROFILE

 

SYS@lhrdb> SELECT NB.PASSWORD FROM USER$ NB WHERE NB.NAME ='LHRSYS';

 

PASSWORD

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

F809740420A44EFC

 

SYS@lhrdb> ALTER USER LHRSYS   IDENTIFIED BY VALUES 'F809740420A44EFC';

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,profile from dba_users where username = 'LHRSYS';

 

USERNAM ACCOUNT_STATUS                  EXPIRY_DATE         PROFILE

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

LHRSYS  OPEN                                                TESTPROFILE

 

SYS@lhrdb>

 

1.3.2  ACCOUNT_STATUS的九種狀態

wpsDDB3.tmp 

SYS@lhrdb> 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

 

9 rows selected.

 

 

以上九種能夠分爲兩大類:1.基本狀態;2.組合狀態。

前五種是基本狀態:

         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

規律是這樣的:後四種的組合狀態能夠經過狀態號STATUS#得到它是哪兩種狀態的組合,例如10=2+8(10 EXPIRED(GRACE) & LOCKED = 2 EXPIRED(GRACE) + 8 LOCKED)。所以只要瞭解基本狀態的含義其餘即可無師自通。

這五種基本狀態又能夠分爲三類:1.正常狀態;2.鎖定狀態;3.密碼過時狀態。

1)OPEN表示用戶處於正常狀態。

2)用戶被鎖定狀態,LOCKED和LOCKED(TIMED)兩種狀態都屬於鎖定狀態

用戶被鎖定通常分爲兩種:一種是DBA顯式的經過SQL語句對用戶進行鎖定;另一種是被動的鎖定,例如默認狀況下若是密碼輸入錯誤超過10次(這個限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,該信息能夠經過DBA_PROFILES視圖查詢),用戶將被鎖定。

wps4FAF.tmp

1.3.2.1  鎖定狀態

1、 LOCKED

顯式鎖定LHRSYS用戶LOCKED狀態演示

SELECT D.USERNAME,

       D.ACCOUNT_STATUS,

       D.LOCK_DATE,

       D.EXPIRY_DATE,

       D.PROFILE,

       NVL(D.PASSWORD,

           (SELECT NB.PASSWORD FROM USER$ NB WHERE NB.NAME = D.USERNAME)) PASSWORD

  FROM DBA_USERS D

 WHERE D.USERNAME = 'LHRSYS';

wpsDDC5.tmp 

SYS@lhrdb> ALTER USER LHRSYS ACCOUNT LOCK;

 

User altered.

 

SYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28000: the account is locked

 

 

Warning: You are no longer connected to ORACLE.

@> conn /  as sysdba

Connected.

 

SYS@lhrdb> select username, account_status,d.lock_date from dba_users d where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

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

LHRSYS                         LOCKED                           2016-12-02 09:33:50

 

SYS@lhrdb> ALTER USER LHRSYS ACCOUNT UNLOCK;

 

User altered.

 

SYS@lhrdb> select username, account_status,d.lock_date from dba_users d where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

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

LHRSYS                         OPEN

 

 

2、 LOCKED(TIMED)

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

嘗試輸入10次錯誤密碼後再次查詢用戶狀態。

SYS@lhrdb> SELECT * FROM Dba_Profiles d WHERE d.profile='DEFAULT' AND D.resource_name LIKE '%FAILED_LOGIN_ATTEMPTS%' ;

 

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10

 

 

SYS@lhrdb> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-28000: the account is locked<<<<<<<<<------超過10次後用戶被鎖定

 

@> CONN / AS SYSDBA

Connected.

 

SYS@lhrdb> select username, account_status,d.lock_date from dba_users d where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

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

LHRSYS                        LOCKED(TIMED)                    2016-12-02 09:37:20

SYS@lhrdb>

SYS@lhrdb>

 

SYS@lhrdb> ALTER USER LHRSYS ACCOUNT UNLOCK;

 

User altered.

 

SYS@lhrdb> select username, account_status,d.lock_date from dba_users d where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

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

LHRSYS                         OPEN

 

 

1.3.2.2  過時狀態

用戶密碼過時狀態,EXPIRED和EXPIRED(GRACE)兩種狀態都屬於密碼過時狀態

wpsDDC6.tmp 

1、 EXPIRED

密碼是否過時是經過修改PROFILE中的PASSWORD_LIFE_TIME實現的,密碼過時後還可使用的天數是經過PROFILE中的PASSWORD_GRACE_TIME控制的。

關於密碼過時咱們也可使用SQL顯式的去完成,簡單演示一下。

SYS@lhrdb> select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         OPEN

 

SYS@lhrdb> alter user lhrsys password expire;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         EXPIRED                          2016-12-01 16:29:01

 

SYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28001: the password has expired

 

 

Changing password for lhrsys

New password:

Retype new password:

Password changed

Connected.

 

LHRSYS@lhrdb> conn / as sysdba

Connected.

SYS@lhrdb> select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         OPEN

 

 

 

下面經過修改系統的日期來演示:

SYS@lhrdb> SELECT D.USERNAME,

  2         D.ACCOUNT_STATUS,

  3         D.LOCK_DATE,

  4         D.EXPIRY_DATE,

  5         D.PROFILE,

  6         NVL(D.PASSWORD,

  7             (SELECT NB.PASSWORD FROM USER$ NB WHERE NB.NAME = D.USERNAME)) PASSWORD

  8    FROM DBA_USERS D

  9   WHERE D.USERNAME = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE           EXPIRY_DATE         PROFILE                        PASSWORD

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

LHRSYS                         OPEN                                                                     DEFAULT                        F809740420A44EFC

 

SYS@lhrdb> create profile TESTPROFILE LIMIT password_life_time 5 password_grace_time 0;<<<<<<<<<------這裏將password_grace_time設置爲0

 

Profile created.

 

SYS@lhrdb> alter user LHRSYS profile TESTPROFILE;

 

User altered.

 

 

SYS@lhrdb>  select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-07 14:50:36

 

--修改系統時間

[root@orcltest ~]# date '12071450'

Wed Dec  7 14:50:00 CST 2016

[root@orcltest ~]#

系統查詢:

SYS@lhrdb>  select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:50:19

 

SYS@lhrdb>  conn LHRSYS/lhr

Connected.

LHRSYS@lhrdb>  conn LHRSYS/lhr

ERROR:

ORA-28001: the password has expired

 

 

Changing password for LHRSYS

New password:

Password unchanged

Warning: You are no longer connected to ORACLE.

 

@> conn / as sysdba

Connected.

SYS@lhrdb>  select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED                          TESTPROFILE                    2016-12-12 10:36:06

 

 

SYS@lhrdb> alter user LHRSYS identified by lhr;

 

User altered.

 

SYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-12 14:52:54

 

 

2、 EXPIRED(GRACE)

當設置了PASSWORD_GRACE_TIME之後,第一次成功登陸後到口令到期後有多少天時間可改變口令,在這段時間內,賬戶被提醒修改口令並能夠正常登錄,account_status顯示爲EXPIRED(GRACE)。expired(grace) 與 locked(timed)是由系統的profile來進行控制的。

SYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-07 14:09:09

 

SYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-02 14:09:32

 

 

SYS@lhrdb> ALTER PROFILE TESTPROFILE LIMIT password_grace_time 3;

 

Profile altered.

 

SYS@lhrdb>  SELECT *

  2     FROM DBA_PROFILES D

  3    WHERE D.PROFILE = 'TESTPROFILE'

  4      AND (D.RESOURCE_NAME LIKE '%PASSWORD%' OR

  5          D.RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS');

 

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

TESTPROFILE                    FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT

TESTPROFILE                    PASSWORD_LIFE_TIME               PASSWORD 5

TESTPROFILE                    PASSWORD_REUSE_TIME              PASSWORD DEFAULT

TESTPROFILE                    PASSWORD_REUSE_MAX               PASSWORD DEFAULT

TESTPROFILE                    PASSWORD_VERIFY_FUNCTION         PASSWORD DEFAULT

TESTPROFILE                    PASSWORD_LOCK_TIME               PASSWORD DEFAULT

TESTPROFILE                    PASSWORD_GRACE_TIME              PASSWORD 3

 

7 rows selected.

 

SYS@lhrdb>

 

 

--修改系統時間

[root@orcltest ~]# date '12071408'<<<<<<<<<------14:09過時,咱們設置到14:08分

Wed Dec  7 14:08:00 CST 2016

[root@orcltest ~]#

 

系統查詢:

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:08:03

 

LHRSYS@lhrdb> conn lhrsys/lhr

Connected.

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:09:06

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:09:09

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:09:11<<<<<<<<<------已過了密碼有效期

 

LHRSYS@lhrdb>  select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-07 14:09:09<<<<<<<<<------但該用戶的狀態未改變,下面嘗試第一次登錄

 

LHRSYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28002: the password will expire within 3 days<<<<<<<<<------第一次登錄後報錯,但用戶依然能夠登錄,且EXPIRY_DATE已經變化

 

 

Connected.

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED(GRACE)                   TESTPROFILE                    2016-12-10 14:09:34

<<<<<<<<<------再次查詢狀態,變爲了EXPIRED(GRACE)

 

再次調整日期:

[root@orcltest ~]# date '12081430'

Thu Dec  8 14:30:00 CST 2016

 

LHRSYS@lhrdb>

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-08 14:30:12

 

LHRSYS@lhrdb>  conn lhrsys/lhr

ERROR:

ORA-28002: the password will expire within 2 days<<<<<<<<<------變爲了2天

 

 

Connected.

LHRSYS@lhrdb>

繼續更改日期:

[root@orcltest ~]# date '12101409'

Sat Dec 10 14:09:00 CST 2016

[root@orcltest ~]#

查詢:

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-10 14:09:07

 

 

LHRSYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28002: the password will expire within 0 days<<<<<<<<<------變爲了0天

 

 

Connected.

 

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED(GRACE)                   TESTPROFILE                    2016-12-10 14:09:34

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-10 14:09:39<<<<<<<<<------GRACE日期已過

 

LHRSYS@lhrdb>  conn lhrsys/lhr

ERROR:

ORA-28001: the password has expired

 

 

Changing password for lhrsys

New password:

Password unchanged

Warning: You are no longer connected to ORACLE.

 

@> conn / as sysdba

Connected.

SYS@lhrdb>

SYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED                          TESTPROFILE                    2016-12-10 14:09:34

 

SYS@lhrdb>  alter user LHRSYS identified by lhr;

 

User altered.

 

SYS@lhrdb>  select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-15 14:13:08

 

SYS@lhrdb>

 

 

1.3.2.3  組合狀態

關於四種組合狀態的解釋

由於鎖定的兩種狀態(LOCKED和LOCKED(TIMED))和密碼過時的兩種狀態(EXPIRED和EXPIRED(GRACE))之間沒有關係。所以他們之間能夠任意組合,2×2=4,所以有四種組合狀態:

         5 EXPIRED & LOCKED(TIMED)

         6 EXPIRED(GRACE) & LOCKED(TIMED)

         9 EXPIRED & LOCKED

        10 EXPIRED(GRACE) & LOCKED

 

1、 EXPIRED & LOCKED

EXPIRED & LOCKED狀態表示用戶密碼過時且同時處於鎖定狀態

SYS@lhrdb> select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN                             2016-12-07 15:02:56

SYS@lhrdb>

SYS@lhrdb> alter user lhrsys password expire;

 

User altered.

 

SYS@lhrdb> select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED                          2016-12-02 15:11:12

 

SYS@lhrdb> alter user lhrsys  account lock;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         EXPIRED & LOCKED                 2016-12-01 16:51:38

 

SYS@lhrdb> alter user lhrsys  account unlock;

 

User altered.

 

SYS@lhrdb>  select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         EXPIRED                          2016-12-01 16:51:38

 

SYS@lhrdb>  alter user lhrsys identified by lhr;

 

User altered.

 

SYS@lhrdb>  select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         OPEN

 

 

 

 

2、 EXPIRED & LOCKED(TIMED)

EXPIRED & LOCKED(TIMED)狀態表示用戶密碼過時後,錯誤密碼嘗試次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN

 

 

SYS@lhrdb> alter user lhrsys password expire;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE

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

LHRSYS                         EXPIRED                          2016-12-02 10:07:27

 

SYS@lhrdb> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> conn / as sysdba

Connected.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED & LOCKED(TIMED)          2016-12-02 10:07:27 2016-12-02 10:09:03

 

SYS@lhrdb>

SYS@lhrdb> alter user lhrsys  account unlock;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED                          2016-12-02 10:07:27

 

SYS@lhrdb> alter user lhrsys identified by lhr;

 

User altered.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN

 

SYS@lhrdb>

 

 

 

3、 EXPIRED(GRACE) & LOCKED

EXPIRED(GRACE) & LOCKED狀態表示用戶在密碼過時後的有效期內被DBA手工鎖定。

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-07 14:39:20

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:39:17

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:39:25

 

 

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-07 14:39:20

 

LHRSYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28002: the password will expire within 3 days

 

 

Connected.

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED(GRACE)                   TESTPROFILE                    2016-12-10 14:39:54

 

LHRSYS@lhrdb> alter user lhrsys account lock;

 

User altered.

 

SYS@lhrdb>  select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED(GRACE) & LOCKED          2016-12-10 14:39:54 2016-12-07 14:40:20

 

 

LHRSYS@lhrdb> alter user lhrsys account unlock;

 

User altered.

 

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED(GRACE)                   TESTPROFILE                    2016-12-10 14:39:54

 

LHRSYS@lhrdb>  alter user LHRSYS identified by lhr;

 

User altered.

 

LHRSYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-12 14:40:46

 

LHRSYS@lhrdb>

 

4、 EXPIRED(GRACE) & LOCKED(TIMED)

EXPIRED(GRACE) & LOCKED(TIMED)狀態表示用戶在密碼過時後的有效期內,失敗登陸次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制。

SYS@lhrdb>  select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN                             2016-12-07 14:50:06

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-02 14:50:13

 

修改系統日期:

[root@orcltest ~]# date '12071450'

Wed Dec  7 14:50:00 CST 2016

[root@orcltest ~]#

查詢:

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:50:03

 

LHRSYS@lhrdb> select sysdate from dual;

 

SYSDATE

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

2016-12-07 14:50:12

 

SYS@lhrdb>  select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN                             2016-12-07 14:50:06

 

LHRSYS@lhrdb> conn lhrsys/lhr

ERROR:

ORA-28002: the password will expire within 3 days

 

 

Connected.

SYS@lhrdb>  select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED(GRACE)                   2016-12-10 14:50:21

 

LHRSYS@lhrdb> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> @> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-28000: the account is locked

 

 

@> conn / as sysdba

Connected.

SYS@lhrdb> select username,account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED(GRACE) & LOCKED(TIMED)   2016-12-10 14:50:21 2016-12-07 14:53:30

 

 

SYS@lhrdb> alter user lhrsys account unlock;

 

User altered.

 

SYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         EXPIRED(GRACE)                   TESTPROFILE                    2016-12-10 14:50:21

 

SYS@lhrdb>  alter user LHRSYS identified by lhr;

 

User altered.

 

SYS@lhrdb> select username,account_status,profile,EXPIRY_DATE from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   PROFILE                        EXPIRY_DATE

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

LHRSYS                         OPEN                             TESTPROFILE                    2016-12-12 14:55:04

 

 

 

1.3.3  在不知道用戶密碼的狀況下如何更改密碼

在Oracle中,若用戶的密碼變爲鎖定狀態(LOCKED、LOCKED(TIMED))則DBA直接執行ALTER USER用戶名 ACCOUNT UNLOCK就能夠解鎖了。可是,若是用戶的狀態變成過時狀態(EXPIRED、EXPIRED(GRACE)),則DBA必需要更改用戶的密碼帳戶才能從新使用。但有些時候,由於各類緣由並不知道原密碼的明文是什麼,這時候能夠有以下2種辦法來更新密碼。

1.3.3.1  用原密碼的密文來更改密碼

在Oracle 10g中,DBA_USERS視圖的PASSWORD字段提供了密碼的密文形式,而在Oracle 11g中,該字段被棄用了,內容爲空,可是在基表USER$中的PASSWORD字段依然有記錄密文形式,因此能夠經過以下的形式來獲取密碼的密文形式:

SELECT D.USERNAME,

       D.ACCOUNT_STATUS,

       D.LOCK_DATE,

       D.EXPIRY_DATE,

       D.PROFILE,

       NVL(D.PASSWORD,

           (SELECT NB.PASSWORD FROM USER$ NB WHERE NB.NAME = D.USERNAME)) PASSWORD

  FROM DBA_USERS D

 WHERE D.USERNAME = 'LHRSYS';

wpsDDD6.tmp 

另外,能夠經過DBMS_METADATA.GET_DDL包或者expdp、exp命令來獲取建立用戶的語句從而獲取密碼的密文形式:

SYS@lhrdb> set long 9999

SYS@lhrdb> SELECT DBMS_METADATA.GET_DDL('USER', 'LHRSYS') DDL_SQL FROM DUAL;

 

DDL_SQL

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

 

   CREATE USER "LHRSYS" IDENTIFIED BY VALUES 'S:853EA80BAE11F79D6946453F38059E30313FE84C96AE2EE4F3AA35A648BD;F809740420A44EFC'

      DEFAULT TABLESPACE "USERS"

      TEMPORARY TABLESPACE "TEMP"

 

 

SYS@lhrdb>

SYS@lhrdb>

 

 

獲取了密碼的密文後就能夠用以下的命令來修改了,注意:使用密文的命令中多了一個values關鍵字:

SYS@lhrdb>

SYS@lhrdb> alter user LHRSYS identified by values 'F809740420A44EFC';

 

User altered.

 

SYS@lhrdb> CONN  LHRSYS/lhr@192.168.59.129/lhrdb

Connected.

LHRSYS@192.168.59.129/lhrdb> conn / as sysdba

Connected.

SYS@lhrdb> alter user LHRSYS identified by values 'S:853EA80BAE11F79D6946453F38059E30313FE84C96AE2EE4F3AA35A648BD;F809740420A44EFC';

 

User altered.

 

SYS@lhrdb> CONN  LHRSYS/lhr@192.168.59.129/lhrdb

Connected.

LHRSYS@192.168.59.129/lhrdb>

 

 

這種狀況下,雖然咱們不知道原密碼是什麼,但能夠用它的密文來更改密碼,這樣,在不知道原密碼的狀況下,既保持了密碼不改變,又能夠把expired的狀態更改掉。

在MOS The Impact of PASSWORD_LIFE_TIME Database Profile Parameter Default to 180 Days on Network Charging and Control (文檔 ID 1543668.1)中搜到了以下的命令也能夠直接獲取密碼:

SELECT SQLTEXT

  FROM (SELECT NAME,

               'alter user ' || NAME || ' identified by values ''' ||

               PASSWORD || ''';' SQLTEXT

          FROM USER$

         WHERE SPARE4 IS NULL

           AND PASSWORD IS NOT NULL

        UNION

        SELECT NAME,

               'alter user ' || NAME || ' identified by values ''' || SPARE4 || ';' ||

               PASSWORD || ''';' SQLTEXT

          FROM USER$

         WHERE SPARE4 IS NOT NULL

           AND PASSWORD IS NOT NULL)

 WHERE NAME = 'LHRSYS';

SYS@lhrdb> SELECT SQLTEXT

  2    FROM (SELECT NAME,

  3                 'alter user ' || NAME || ' identified by values ''' ||

  4                 PASSWORD || ''';' SQLTEXT

  5            FROM USER$

  6           WHERE SPARE4 IS NULL

  7             AND PASSWORD IS NOT NULL

  8          UNION

  9          SELECT NAME,

10                 'alter user ' || NAME || ' identified by values ''' || SPARE4 || ';' ||

11                 PASSWORD || ''';' SQLTEXT

12            FROM USER$

13           WHERE SPARE4 IS NOT NULL

14             AND PASSWORD IS NOT NULL)

15   WHERE NAME = 'LHRSYS';

 

SQLTEXT

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

alter user LHRSYS identified by values 'S:853EA80BAE11F79D6946453F38059E30313FE84C96AE2EE4F3AA35A648BD;F809740420A44EFC';

 

 

1.3.3.2  直接更新USER$基表

無論用戶的狀態是什麼,經過更新USER$表可讓用戶處於OPEN狀態:

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         EXPIRED                          2016-12-02 10:40:09

 

SYS@lhrdb> UPDATE USER$ SET ASTATUS=0 WHERE NAME='LHRSYS';

 

1 row updated.

 

SYS@lhrdb> commit;<<<<<<<<<------及時提交

 

Commit complete.

 

SYS@lhrdb> select username, account_status,EXPIRY_DATE,lock_date from dba_users where username = 'LHRSYS';

 

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DATE         LOCK_DATE

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

LHRSYS                         OPEN

 

SYS@lhrdb>

 

 

1.3.4  user$.lCOUNT列記錄了失敗的登錄次數

登陸失敗,lcount加1;只要成功登陸後,lcount欄位就會置0。

SYS@lhrdb> select NAME,LCOUNT  from user$ a WHERE a.NAME='LHRSYS';

 

NAME                               LCOUNT

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

LHRSYS                                  0

 

SYS@lhrdb> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

@> CONN  LHRSYS/XXXX@192.168.59.129/lhrdb

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

@> conn / as sysdba

Connected.

SYS@lhrdb> select NAME,LCOUNT  from user$ a WHERE a.NAME='LHRSYS';

 

NAME                               LCOUNT

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

LHRSYS                                  2

 

SYS@lhrdb>

SYS@lhrdb> CONN  LHRSYS/lhr

Connected.

LHRSYS@lhrdb> conn / as sysdba

Connected.

SYS@lhrdb> select NAME,LCOUNT  from user$ a WHERE a.NAME='LHRSYS';

 

NAME                               LCOUNT

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

LHRSYS                                  0

 

SYS@lhrdb>

 

 

另外,審計表也記錄了登錄失敗的信息:

SELECT d.username,d.timestamp,d.action_name,d.os_username,d.terminal

  FROM DBA_AUDIT_TRAIL D

 WHERE D.RETURNCODE = 1017

   AND D.USERNAME = 'LHRSYS'

 ORDER BY d.timestamp DESC ;

wpsDDD7.tmp 

 

1.3.5  11g密碼區分大小寫--sec_case_sensitive_logon

Property

Description

Parameter type

Boolean

Default value

true

Modifiable

ALTER SYSTEM

Range of values

true | false

Basic

No

從Oracle 11g開始,密碼區分大小寫,採用參數sec_case_sensitive_logon控制,該參數默認爲TRUE。

 

SEC_CASE_SENSITIVE_LOGON enables or disables password case sensitivity in the database.

Values:

true:Database logon passwords are case sensitive.

false:Database logon passwords are not case sensitive.

 

1.3.6  密碼延遲驗證

從11g開始,若是一個用戶使用不正確的密碼嘗試登陸數據庫,那麼隨着登陸失敗次數的增長,每次登陸驗證前延遲等待的時間也會增長。

 

經過設置EVENTS 28401能夠屏蔽密碼延遲驗證:

SQL> ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;

 

設置該事件後重啓數據庫便可。

[oracle@orcltest ~]$ oerr ora 28401

28401, 00000, "Event to disable delay after three failed login attempts"

// *Document: NO

// *Cause: N/A

// *Action: Set this event in your environment to disable the login delay

//          which will otherwise take place after three failed login attempts.

// *Note: THIS IS NOT A USER ERROR NUMBER/MESSAGE. THIS DOES NOT NEED TO BE

//        TRANSLATED OR DOCUMENTED.

[oracle@orcltest ~]$

 

 

1.3.7  哪些用戶密碼沒有被修改過

Oracle在11g中對於安全方面進行了很大的改進,好比增長了密碼大小寫驗證,增長了密碼複雜度的驗證等等。在Oracle 11g中還提供了一個視圖DBA_USERS_WITH_DEFPWD用來指出那些用戶的密碼沒有被修改過,仍然是數據庫默認密碼。Oracle並非簡單的監測是否密碼被修改,而是檢查密碼是否修改成別的值,若是新密碼和舊密碼保持一致,那麼即便密碼被修改,這個用戶仍然在DBA_USERS_WITH_DEFPWD視圖中。

SELECT * FROM DBA_USERS_WITH_DEFPWD;

wpsDDD8.tmp 

 

1.3.8  密碼複雜性校驗

腳本位置:$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

wpsDDD9.tmp

[oracle@orcltest ~]$ ll $ORACLE_HOME/rdbms/admin/utlpwdmg.sql

-rw-r--r-- 1 oracle oinstall 11555 Aug 13  2006 /u02/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlpwdmg.sql

[oracle@orcltest ~]$

 

SYS@lhrdb> @?/rdbms/admin/utlpwdmg.sql

 

Function created.

 

 

Profile altered.

 

 

Function created.

 

SYS@lhrdb>

 

 

該腳本中有以下的一段:

ALTER PROFILE DEFAULT LIMIT

PASSWORD_LIFE_TIME 180

PASSWORD_GRACE_TIME 7

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_REUSE_MAX UNLIMITED

FAILED_LOGIN_ATTEMPTS 10

PASSWORD_LOCK_TIME 1

PASSWORD_VERIFY_FUNCTION verify_function_11G;

 

更改以後查看:

SYS@lhrdb> SELECT * FROM Dba_Profiles d WHERE d.profile='DEFAULT';

 

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

DEFAULT                        COMPOSITE_LIMIT                  KERNEL   UNLIMITED

DEFAULT                        SESSIONS_PER_USER                KERNEL   UNLIMITED

DEFAULT                        CPU_PER_SESSION                  KERNEL   UNLIMITED

DEFAULT                        CPU_PER_CALL                     KERNEL   UNLIMITED

DEFAULT                        LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED

DEFAULT                        LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED

DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED

DEFAULT                        CONNECT_TIME                     KERNEL   UNLIMITED

DEFAULT                        PRIVATE_SGA                      KERNEL   UNLIMITED

DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10

DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180

DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED

DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED

DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD VERIFY_FUNCTION_11G

DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1

DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7

 

16 rows selected.

 

SYS@lhrdb> create user lhrpwd identified by lhr;

create user lhrpwd identified by lhr

*

ERROR at line 1:

ORA-28003: password verification for the specified password failed

ORA-20001: Password length less than 8

 

 

SYS@lhrdb>

SYS@lhrdb> alter profile default limit PASSWORD_VERIFY_FUNCTION null;<<<<<<<<<------取消複雜性驗證

 

Profile altered.

 

SYS@lhrdb> create user lhrpwd identified by lhr;

 

User created.

 

SYS@lhrdb> alter profile default limit PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G;<<<<<<<------啓用密碼複雜性驗證

 

Profile altered.

 

SYS@lhrdb>

 

 

 

1.3.9  resource_limit

官方文檔資料:

To create a profile, you must have the CREATE PROFILE system privilege.

To specify resource limits for a user, you must:

?Enable resource limits dynamically with the ALTER SYSTEM statement or with the initialization parameter RESOURCE_LIMIT. This parameter does not apply to password resources. Password resources are always enabled.

?Create a profile that defines the limits using the CREATE PROFILE statement

?Assign the profile to the user using the CREATE USER or ALTER USER statement

 

1)用戶全部擁有的PROFILE中有關密碼的限制永遠生效,不受限制。 
2)用戶全部擁有的PROFILE中有關資源的限制與resource_limit參數的設置有關,當爲TRUE時生效,當爲FALSE時(默認值是FALSE)無效。

About Me

...............................................................................................................................

● 本文做者:小麥苗,只專一於數據庫的技術,更注重技術的運用

● 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和我的微信公衆號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/viewspace-2129595/

● 本文博客園地址:http://www.cnblogs.com/lhrbest/p/6127710.html

● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● QQ羣:230161599     微信羣:私聊

● 聯繫我請加QQ好友(642808185),註明添加原因

● 於 2016-12-01 15:00 ~ 2016-12-02 23:00 在農行完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網絡,如有侵權或不當之處還請諒解

● 版權全部,歡迎分享本文,轉載請保留出處

...............................................................................................................................

手機長按下圖識別二維碼或微信客戶端掃描下邊的二維碼來關注小麥苗的微信公衆號:xiaomaimiaolhr,免費學習最實用的數據庫技術。

wpsF8C8.tmp

 

相關文章
相關標籤/搜索