收到消息Your password will be expired with in 7 days
後,我將default
配置文件的密碼過期天數更改爲UNLIMITED
。但是一些用戶的賬戶狀態仍然在EXPIRE(GRACE)
。將Oracle用戶帳戶狀態從EXPIRE(GRACE)更改爲OPEN
如何在不重置密碼的情況下將Oracle用戶帳戶狀態從EXPIRE(GRACE)
更改爲OPEN
?
收到消息Your password will be expired with in 7 days
後,我將default
配置文件的密碼過期天數更改爲UNLIMITED
。但是一些用戶的賬戶狀態仍然在EXPIRE(GRACE)
。將Oracle用戶帳戶狀態從EXPIRE(GRACE)更改爲OPEN
如何在不重置密碼的情況下將Oracle用戶帳戶狀態從EXPIRE(GRACE)
更改爲OPEN
?
不,您不能在不重置密碼的情況下將帳戶狀態從EXPIRE(GRACE)更改爲OPEN。
如果導致數據庫用戶的密碼,以 之前PASSWORD 到期到期,那麼用戶(或DBA)必須更改密碼試圖登錄到數據庫繼過期。
但是,您可以通過將用戶密碼重置爲相同的值來將狀態更改爲OPEN。
根據您的版本和設置,其中一個查詢可能會得到你的密碼哈希:
select spare4 from sys.user$ where name='[user name]';
select password from dba_users where username = '[user name]';
然後用它來重置密碼:
alter user [user name] identified by values '[result from above query]';
編輯從jonearles的回答, http://kishantha.blogspot.com/2010/03/oracle-enterprise-manager-console.html和http://blog.flimatech.com/2011/07/17/changing-oracle-password-in-11g-using-alter-user-identified-by-values/(Oracle 11g):
要在將來停止這種情況,請執行以下操作。
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED;
要重置用戶的狀態,運行查詢:
select
'alter user ' || su.name || ' identified by values'
|| ' ''' || spare4 || ';' || su.password || ''';'
from sys.user$ su
join dba_users du on ACCOUNT_STATUS like 'EXPIRED%' and su.name = du.username;
和執行一些或全部結果集。
如果你知道用戶的密碼,或者你想猜,請執行下列操作:
connect user/password
如果此命令successufully連接,你會看到消息「連接」,否則你會看到一條錯誤消息。如果你是成功的日誌記錄,那意味着你知道密碼。 在這種情況下,只是做:
alter user NAME_OF_THE_USER identified by OLD_PASSWORD;
,這將重置密碼相同的密碼之前,也重置該用戶的ACCOUNT_STATUS。
set long 9999999
set lin 400
select DBMS_METADATA.GET_DDL('USER','YOUR_USER_NAME') from dual;
這將輸出類似這樣:
SQL> select DBMS_METADATA.GET_DDL('USER','WILIAM') from dual;
DBMS_METADATA.GET_DDL('USER','WILIAM')
--------------------------------------------------------------------------------
CREATE USER "WILIAM" IDENTIFIED BY VALUES 'S:6680C1468F5F3B36B726CE7620F
FD9657F0E0E49AE56AAACE847BA368CEB;120F24A4C2554B4F'
DEFAULT TABLESPACE "USER"
TEMPORARY TABLESPACE "TEMP"
PASSWORD EXPIRE
SQL>
只使用第一塊與代替ALTER USER:
ALTER USER "WILIAM" IDENTIFIED BY VALUES 'S:6680C1468F5F3B36B726CE7620F
FD9657F0E0E49AE56AAACE847BA368CEB;120F24A4C2554B4F';
這將使帳戶回到開狀態而無需更改密碼(只要您正確剪切並粘貼來自DBMS_METADATA.GET_DDL輸出的哈希值),而且您甚至不需要知道密碼是什麼。
令人驚歎!像魔術一樣工作! – AlexSC 2017-09-28 11:10:11
我只需要首先使線寬變大,以便我可以輕鬆地複製結果: set linesize 200; – AmanicA 2014-08-06 15:59:27
這幫了我!謝謝! – 2015-02-17 08:47:50