今天看oracle相关书时,conn /as sysdba 和 conn scott/tiger 时,切换了几次了, conn scott/tiger时,出错:
SQL> conn scott/tiger
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
SQL> show user
USER is ""然后,查询
SQL> select username, account_status from dba_users where username='SCOTT';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT EXPIRED(GRACE)
SOCTT的状态是过期(GRACE),没听过
找到一篇解决方案,来自: http://alexy.blog.51cto.com/6115453/1129751
先贴个链接,稍后再整理。
最近一个奇怪现象为账户为EXPIRED(GRACE),查阅资料得知这是oracle11g安全的一个更新,类似系统账号过期一样。
解释如下:
2)默认宽限时间为7天
4)修改默认宽限期限
5)修改用户密码为原来密码(假设当前密码为tiger)
6)查看用户当期那状态
10类状态说明:
SQL> conn scott/tiger
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
SQL> show user
USER is ""然后,查询
SQL> select username, account_status from dba_users where username='SCOTT';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT EXPIRED(GRACE)
SOCTT的状态是过期(GRACE),没听过
找到一篇解决方案,来自: http://alexy.blog.51cto.com/6115453/1129751
先贴个链接,稍后再整理。
最近一个奇怪现象为账户为EXPIRED(GRACE),查阅资料得知这是oracle11g安全的一个更新,类似系统账号过期一样。
1)查询用户状态为
SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from dba_users where username='SCOTT';
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
-------------------- -------------------- -------------- --------------
SCOTT EXPIRED(GRACE) 17-JAN-15
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
-------------------- -------------------- -------------- --------------
SCOTT EXPIRED(GRACE) 17-JAN-15
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>
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.
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>
PROFILE RESOURCE_NAME RESOURCE LIMIT
-------------------- -------------------------------- -------- ---------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
SQL>
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>
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
-------------------- -------------------- ---------------- --------------------
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
SQL>
3)修改默认有效期天数为无限 (有效步骤)
![](http://blog.itpub.net/kindeditor/plugins/emoticons/images/0.gif)
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
用户已更改。
SQL>
用户已更改。
SQL>
(有效步骤)
![](http://blog.itpub.net/kindeditor/plugins/emoticons/images/0.gif)
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
用户已更改。
SQL>
用户已更改。
SQL>
(有效步骤)
![](http://blog.itpub.net/kindeditor/plugins/emoticons/images/0.gif)
SQL>ALTER USER SCOTT IDENTIFIED BY cat;
用户已更改。
SQL>
用户已更改。
SQL>
SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from dba_users where username='SCOTT';
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
-------------------- -------------------- -------------- --------------
cbd OPEN
SQL>
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>
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
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
五种基本状态可分为三类:
正常状态; 锁定状态; 密码过期状态。 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;
正常状态; 锁定状态; 密码过期状态。 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;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26263620/viewspace-1397255/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26263620/viewspace-1397255/