1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
4、解除账号锁定
sql>alter user sys account unlock;修改之后不需要重启动数据库,会立即生效。
5、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;
已经被提示的帐户必须再改一次密码,举例如下:
$sqlplus / as sysdba
sql> alter user smsc identified by <原来的密码> ----不用换新密码
Oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。
如果oracle的账号密码过期,又不知道密码是多少的情况下,如果修改了账号密码,那么对应的应用软件,也需要修改密码,
这样就比较复杂化了,可能应用程序需要修改的地方比较多,可以使用下面的方法解决。
下面的技艺以不用更改密码的方式,使用已过期的密码重新生效。
(1) 使用特权用户查看过期账号配置文件:
SQL>select username,profile from dba_users where username='HR';
USERNAME PROFILE -------- ------- HR DEFAULT
(2) 创建一个临时的概要配置文件分配给过期用户。
SQL> create profile temp_prof LIMIT
password_reuse_max unlimited
password_reuse_time unlimited;
(3) 将临时配置文件分配给过期用户。
SQL> alter user HR profile temp_prof;
(4) 查看引起混乱的密码:
SQL> select password from user$ where name='HR';
PASSWORD ---------------- 3CB49ED0A9EEA967 (5)使用原密码设置过期账号的新密码,这样就可以使用过期的密码重新生效。
SQL> alter user HR identified by '3CB49ED0A9EEA967';
(6) 将原来的配置文件重新分配给用户。
SQL> alter user HR profile default;
使用上面的方法,可以在不知道原密码的情况下,使用已经过期的密码重新生效,
而且还能避免因配置文件的限制(如password_reuse_max),导致无法重用密码的问题(ORA_28007:the password cannot be reused).