分类: Oracle
Oracle 11g中修改默认密码过期180天及10次锁定限制

oracle中默认在default概要文件中设置了'PASSWORD_LIFE_TIME=180'天导致用户到了180天以后就无法登录了,解决方法如下:

密码过期180天限制取消:
1、查看用户用的哪种profile策略,一般是default:

SQL> select username,profile from dba_users where username='POWERDESK';

USERNAME                       PROFILE
------------------------------ ------------------------------
POWERDESK                      DEFAULT

2、查看指定概要文件(如default)的密码有效期设置:

SQL> select * FROM dba_profiles s Where s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'; 

PROFILE                        RESOURCE_NAME           RESOURCE_TYPE LIMIT 
------------------------------ ----------------------- ------------ -------- 
DEFAULT                        PASSWORD_LIFE_TIME        PASSWORD      180

3、将密码有效期由默认的180天修改成'无限制':

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 

Profile altered.

4、默认宽限时间为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

修改默认宽限时间为无限制:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;

再次查看已经更改,修改之后不需要重启动数据库,会立即生效。
参数说明:

 Password_parameter部分:
       Failed_login_attempts:指定在帐户被锁定之前所允许尝试登陆的的最大次数。
       Password_life_time:指定同一密码所允许使用的天数。如果同时指定了password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引发一个数据库警告,但是允许用户继续连接。
       Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。
       1.如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。
       如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。
       2.如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。
       3.如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。
       4.如果两个参数都设置为unlimited,则数据库忽略他们。
       Password_lock_time:指定登陆尝试失败次数到达后帐户的缩定时间,以天为单位。
       Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
       Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格式,除了数据库标量子查询。

5、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;已经被提示的帐户必须再改一次密码,

sql> alter user 用户名 identified by 原来的密码;----不用换新密码 
oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。

取消密码错误10次账号被锁定限制
1、查看用户的proifle是哪个,一般是default:

SQL> SELECT username,PROFILE FROM dba_users where USERNAME='POWERDESK'; 

USERNAME                       PROFILE
------------------------------ ------------------------------
POWERDESK                      DEFAULT

2、查看指定概要文件(如default)的密码有效期设置:

SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS'; 

PROFILE                        RESOURCE_NAME                    RESOURCE
------------------------------ -------------------------------- --------
LIMIT
----------------------------------------
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD

3、将尝试登录失败次数由默认的10次修改成'无限制':

sql> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED; 

4、修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示;
已经被锁定的帐户必须解除锁定:

alter user 用户名 account unlock;

修改之后不需要重启动数据库,会立即生效;

5、账号常用操作:
修改密码

ALTER USER 用户名 IDENTIFIED BY 新密码;

锁定账号

alter user 用户名 account lock;

解锁账号

alter user 用户名 account unlock;

查看账号状态

select username,account_status from dba_users;

查看账号密码到期时间

select username, account_status,EXPIRY_DATE from dba_users where username = 'USERNAME';

查询用户概要文件情况

SQL> SELECT username,PROFILE FROM dba_users ;

USERNAME                       PROFILE
------------------------------ ------------------------------
SCOTT                          DEFAULT
ORACLE_OCM                     DEFAULT
XS$NULL                        DEFAULT
MDDATA                         DEFAULT
DIP                            DEFAULT
APEX_PUBLIC_USER               DEFAULT
SPATIAL_CSW_ADMIN_USR          DEFAULT
SPATIAL_WFS_ADMIN_USR          DEFAULT
DBSNMP                         MONITORING_PROFILE
SYSMAN                         DEFAULT
FLOWS_FILES                    DEFAULT

USERNAME                       PROFILE
------------------------------ ------------------------------
MDSYS                          DEFAULT
ORDSYS                         DEFAULT
EXFSYS                         DEFAULT
WMSYS                          DEFAULT
APPQOSSYS                      DEFAULT
APEX_030200                    DEFAULT
OWBSYS_AUDIT                   DEFAULT
ORDDATA                        DEFAULT
CTXSYS                         DEFAULT
ANONYMOUS                      DEFAULT
XDB                            DEFAULT

USERNAME                       PROFILE
------------------------------ ------------------------------
ORDPLUGINS                     DEFAULT
OWBSYS                         DEFAULT
SI_INFORMTN_SCHEMA             DEFAULT
OLAPSYS                        DEFAULT
MGMT_VIEW                      DEFAULT
SYS                            DEFAULT
SYSTEM                         DEFAULT
OUTLN                          DEFAULT
POWERDESK                      DEFAULT
PLAS                           DEFAULT

32 rows selected.

账号有多少中状态

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.

九种状态可分为两类: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#获得其状态的两个组合。

五种基本状态可分为三类:

1.正常状态;
2.锁定状态;
3.密码过期状态。
1、OPEN状态表示用户处于正常状态。
2、LOCKED和LOCKED(TIMED)表示用户被锁定状态。
用户被锁定有两种:
一种是DBA显式的通过SQL语句对用户进行锁定;
另一种是被动的锁定,默认情况下如果密码输入错误超过10次。
该限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可查看视图DBA_PROFILES。
1)显式锁定用户LOCKED:alter user [username] account lock;
2)输入10次错误密码后被动锁定LOCKED(TIMED)

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:alter user [username] identified by account unlock;

四、锁定的两种状态[LOCKED和LOCKED(TIMED)]和密码过期的两种状态[EXPIRED和EXPIRED(GRACE)]之间任意组合即2×2=4,因此有四种组合状态。


相关博文:

发表新评论