茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671256 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_2498236.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

DB研討會 : [轉貼]如何更改ORACLE 用戶的 expired狀態

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]如何更改ORACLE 用戶的 expired狀態

如何更改ORACLE 用戶的 expired狀態


oracle中, 經常用戶的狀態會變成locked, expired 等狀態, 這種情況下怎麼處理呢?


首先, 如果是locked狀態還好辦, DBA直接執行alter user scott account unlock 就可以了.

但是如果變成expired狀態, oracle本身是不提供解鎖的語句的, 因為賬戶過期,必須要用戶更改密碼, 賬戶才能重新使用. 但有些時候, 因為各種原因, 我們並不知道原密碼的明文是什麼,這時候就很麻煩了, 經研究發現,有兩種方法可以實現:


一. 用原密碼的
密文 來更改密碼:


SQL>conn  /as sysdba
SQL>select password from dba_users where username='SCOTT';
password
------------------------------
E65E6AF62B2449CF
SQL>alter user SCOTT identified by values 'E65E6AF62B2449CF';


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



二. 下面這一條語句搞定,不管用戶的狀態是什麼:

UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';

原理詳解:
用戶的信息都是存在user$這樣一個系統表裡面的


SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
NAME ASTATUS PASSWORD
------------------------------ ---------- ------------------------------
SCOTT 1 E65E6AF62B2449CF
SYS 0 8A8F025737A9097A
SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYS OPEN
SCOTT EXPIRED


而用戶ASTATUS對應的表為:user_astatus_map



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
9 rows selected.




關鍵是user$表本身是可以更改的, 所以此時我們就可以直接把用戶的ASTATUS字段改成0就可以了


SQL> UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
1 row updated.
SQL> COMMIT;
Commit complete.
SQL> alter system flush shared_pool;
System altered.




再來觀察結果:

SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
NAME ASTATUS PASSWORD
------------------------------ ---------- ------------------------------
SCOTT 0 E65E6AF62B2449CF
SYS 0 8A8F025737A9097A
SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT OPEN
SYS OPEN







原文出處:如何更改ORACLE 用户的 expired状态 - CSDN博客
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]Oracle用戶密碼過期和用戶被鎖解決方法
Oracle用戶密碼過期和用戶被鎖解決方法
2011年03月23日 10:49:00

【原因/觸發因素】

確定是由於oracle11g中默認在default概要文件中設置了「PASSWORD_LIFE_TIME=180天」所導致。

【影響和風險】

影響

密碼過期後,業務進程連接數據庫異常,影響業務使用。

問題發生頻率

數據庫密碼過期後,業務進程一旦重啟會提示連接失敗。

【解決方案】

按照如下步驟進行操作:

1、查看用戶的proifle是哪個,一般是default:
sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密碼有效期設置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

3、將密碼有效期由默認的180天修改成「無限制」:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

修改之後不需要重啟動數據庫,會立即生效。

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

已經被提示的帳戶必須再改一次密碼,舉例如下:
$sqlplus / as sysdba

sql> alter user smsc identified by <原來的密碼> ----不用換新密碼

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

二、【問題描述】

近日H局點反饋,使用sqlplus登陸短消息oracle數據庫時提示「ORA-28000: 帳號被鎖定」。

【原因/觸發因素】

確定是由於oracle11g中默認在default概要文件中設置了「FAILED_LOGIN_ATTEMPTS=10次」,當輸入密碼錯誤次數達到設置值將導致此問題。

【影響和風險】

影響

帳號被鎖定後,業務進程連接數據庫異常,影響業務使用。

問題發生頻率

數據庫帳號被鎖定後,業務進程一旦重啟會提示連接失敗。

【解決方案】

按照如下步驟進行操作:

1、查看用戶的proifle是哪個,一般是default:
sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密碼有效期設置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';

3、將嘗試登錄失敗次數由默認的10次修改成「無限制」:
sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

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

已經被鎖定的帳戶必須解除鎖定,舉例如下:
$sqlplus / as sysdba

sql> alter user smsc identified by oracle account unlock;

5、修改後default profile應該如下:
sql> select * from dba_profiles WHERE dba_profiles.profile='DEFAULT';

PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT

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

DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED

DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED


修改之後不需要重啟動數據庫,會立即生效。

如果出現ORA-28000 the account is locked.錯誤
alter user 用戶名 account unlock;


原文出處:Oracle用户密码过期和用户被锁解决方法 - CSDN博客
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]ORACLE 賬戶提示 EXPIRED(GRACE) 問題解決
ORACLE賬戶提示EXPIRED(GRACE)問題解決
2013年05月08日 19:15:41

最近一個奇怪現象為賬戶為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_123)
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 account unlock;

推薦帖子:
http://blog.csdn.net/kai27ks/article/details/6270350
http://hi.baidu.com/nonyi_com/item/f29f10720eae1c41ee1e534a

原文出處:ORACLE账户提示EXPIRED(GRACE)问题解决 - CSDN博客
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|