zoukankan      html  css  js  c++  java
  • Oracle数据库用户的密码过期问题处理

    SQL> select username, user_id, account_status,expiry_date, profile from dba_users where username = 'SCOTT';

    USERNAME USER_ID ACCOUNT_STATUS EXPIRY_DATE PROFILE
    -------------------- ---------- ------------------------------------------------- -------------------
    SCOTT 52 EXPIRED & LOCKED(TIMED) 2019/07/22 20:12:35 DEFAULT


    一、Oracle数据库用户的密码过期时间如何修改为永不过期

    Oracle的密码过期规则是用Profile来管理的,系统默认只有一个Profile(DEFAULT),该profile的密码过期规则为180天。

    修改Oracle数据库用户的密码过期时间为永不过期?

    而所有的用户都使用该DEFAULT的profile,所以如果修改DEFAULT的过期规则会影响所有的用户;

    所以新建一个profile,修改该profile的过期规则为无限期,让某个用户适用于该profile,该用户的过期规则会变更。

    以下举例:修改SCOTT用户的密码过期规则为UNLIMITED

    1. 新建profile "PASSWD_UNLIMIT",规则与DEFAULT一致(因为一个profile中包含很多的项目,我们此时只想修改过期规则,其他的不变)

    2. 修改profile "PASSWD_UNLIMIT",修改过期规则为UNLIMITED

    3. 将'SCOTT'用户适用新的profile "PASSWD_UNLIMIT"

    SQL如下:
    SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

    SELECT * FROM dba_profiles;

    --查看用户profile

    select username, user_id, account_status,expiry_date, profile from dba_users where username = 'SCOTT';

    --1. 创建新的profile(PASSWD_UNLIMIT)复制DEFAULT的Script
    CREATE PROFILE "PASSWD_UNLIMIT" LIMIT
    SESSIONS_PER_USER UNLIMITED
    CPU_PER_SESSION UNLIMITED
    CPU_PER_CALL UNLIMITED
    CONNECT_TIME UNLIMITED
    IDLE_TIME UNLIMITED
    LOGICAL_READS_PER_SESSION UNLIMITED
    LOGICAL_READS_PER_CALL UNLIMITED
    COMPOSITE_LIMIT UNLIMITED
    PRIVATE_SGA UNLIMITED
    FAILED_LOGIN_ATTEMPTS 10
    PASSWORD_LIFE_TIME 180
    PASSWORD_REUSE_TIME UNLIMITED
    PASSWORD_REUSE_MAX UNLIMITED
    PASSWORD_LOCK_TIME 1
    PASSWORD_GRACE_TIME 7
    PASSWORD_VERIFY_FUNCTION NULL;
    SELECT * FROM dba_profiles;
    --2. 修改新建的profile(PASSWD_UNLIMIT),密码过期为不过期
    ALTER profile PASSWD_UNLIMIT limit PASSWORD_LIFE_TIME UNLIMITED;
    --3. 修改用户的Profile为新的profile
    alter user SCOTT profile PASSWD_UNLIMIT;

    二、Oracle数据库用户账号处于expired状态解决方法

    Oracle数据库账户过期,必须要用户更改密码, 账户才能重新使用。

    但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码。

    在11G中,dba_users.password已经不再显示用户的密码:

    SQL> select username,ACCOUNT_STATUS from dba_users where username in ('SYSTEM','SCOTT');

    USERNAME ACCOUNT_STATUS
    ------------------------------ --------------------------------
    SCOTT OPEN
    SYSTEM EXPIRED
    SQL> select password from dba_users where username in ('SYSTEM','SCOTT');
    PASSWORD
    ------------------------------

    在系统表user$中,可以查看用户的密码(PASSWORD)和状态(ASTATUS)
    SQL> select user#,name,password,astatus from user$ where name in ('SYSTEM','SCOTT');
    USER# NAME PASSWORD ASTATUS
    ---------- ------------------------------ ------------------------------ ----------
    83 SCOTT F894844C34402B67 0
    5 SYSTEM 2D594E86F93B17A1 1
    SQL>

    可以通过上面的查询结果,用原来的密码来修改过期用户的密码:

    SQL> alter user system identified by values '2D594E86F93B17A1';
    User altered.
    SQL> select user#,name,password,astatus from user$ where name in ('SYSTEM','SCOTT');
    USER# NAME PASSWORD ASTATUS
    ---------- ------------------------------ ------------------------------ ----------
    83 SCOTT F894844C34402B67 0
    5 SYSTEM 2D594E86F93B17A1 0
    SQL>
    其实也可以直接修改表user$的字段ASTATUS为0,这样用户账号就变成open状态了。
    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.
    SQL>
    SQL> select username, user_id, account_status,expiry_date, profile from dba_users where username = 'SCOTT';

    USERNAME USER_ID ACCOUNT_STATUS EXPIRY_DATE PROFILE
    -------------------- ---------- ------------------------------------------------- ------------------- --------------------
    SCOTT 52 OPEN PASSWD_UNLIMIT

  • 相关阅读:
    030-B+树(三)
    028-B+树(一)
    027-B树(二)
    026-B树(一)
    025-红黑树(六)
    024-红黑树(五)
    023-红黑树(四)
    022-红黑树(三)
    021-红黑树(二)
    020-红黑树(一)
  • 原文地址:https://www.cnblogs.com/elontian/p/11237540.html
Copyright © 2011-2022 走看看