問題:sql
登錄,就報口令還有7天就到期了,因爲用戶太多,有上1000個,可否不修改口令,經過dba統一修改?oracle
下面模擬一下場景:操作系統
1.先肯定一下環境:server
db版本:it
SQL> select * from v$version;io
BANNERdate
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Productionfile
PL/SQL Release 11.2.0.4.0 - Productionselect
CORE 11.2.0.4.0 Productionim
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
日期時間:
[oracle@dbserver ~]$ date
Thu Jan 9 18:03:39 CST 2014
口令到期時間:
SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';
RESOURCE_NAME LIMIT
PASSWORD_LIFE_TIME 180
用戶狀態:
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';
USERNAME ACCOUNT_STATUS EXPIRY_DA
---------
HR OPEN 08-JUL-14
經過以上,咱們看到目前hr用戶的到期時間爲 2014-7-08號
SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_GRACE_TIME';
RESOURCE_NAME LIMIT
PASSWORD_GRACE_TIME 7
接下來,咱們修改操做系統時間爲7月9號
2.修改操做系統時間爲7月9號
[root@dbserver ~]# date -s '2014-07-09 18:09'
Wed Jul 9 18:09:00 CST 2014
[root@dbserver ~]# date
Wed Jul 9 18:09:01 CST 2014
[root@dbserver ~]#
如今看看hr的狀態
[oracle@dbserver ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 9 18:10:02 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';
USERNAME ACCOUNT_STATUS EXPIRY_DA
---------
HR OPEN 08-JUL-14
SQL>
你們看到 hr的到期時間還爲 08-jul-14
3.登錄hr
SQL> conn hr/hr
ERROR:
ORA-28002: the password will expire within 7 days
Connected.
SQL>
一登錄,就提示還有7天就過時
看看狀態
SQL> conn / as sysdba
Connected.
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';
USERNAME ACCOUNT_STATUS EXPIRY_DA
---------
HR EXPIRED(GRACE) 16-JUL-14
SQL>
能夠看到,這個account狀態,只有在登錄時,纔會變化.不登錄,就不會變化.
你們看到,hr的用戶的狀態已經變成 expired(grace)狀態了
在7天之內hr登錄,都會提示這個 ora-28002的提示,不影響使用,但到 16-JUL-14 後,若是口令還不到期,這個用戶就要被鎖定