关于Oracle用户的密码很少去关注,一般都只在安装完数据库后将密码过期时间设置为永不过期,但是一次在开启autotrace时遇到了错误,引起我对用户密码的关注。我们在工作中遇到的环境是千差万别的,你不可能知道下一个客户的环境是什么样子,不可能知道安装你所使用的库的DBA是按什么套路安装的数据库,这是实际工作的一个难点所在,当然也是乐趣所在。生产环境的千差万别也是催促我们学习的动力之一。下面介绍三点关于Oracle用户密码的注意点:
一、用户密码即将过期,导致autotrace无法打开
如果用户密码即将过期,在登录数据库时会收到如下提示:
ERROR:
ORA-28002: the password will expire within 7 days
当然,此时密码还未真正过期,用户在收到错误提示后依然可以登录数据库。但是,如果当收到密码即将过期的提示,想要开启autotrace就会有问题。
SQL> conn darren/darren
ERROR:
ORA-28002: the password will expire within 7 days
Connected.
SQL> set autotrace on;
ERROR:
ORA-28002: the password will expire within 7 days
SP2-0619: Error while connecting
SP2-0611: Error enabling STATISTICS report
既然出现了密码即将过期的提示,说明profile中的PASSWORD_LIFE_TIME参数肯定没有设置成unlimited,可以查看dba_profiles进行验证:
SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_NAME LIMIT
---------- -------------------------------- ----------
DEFAULT PASSWORD_LIFE_TIME 1
如果生产环境没有对密码过期的特殊限制,可以把该参数修改为unlimitd:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED
此时再尝试打开autotrace:
SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_NAME LIMIT
---------- -------------------------------- ----------
DEFAULT PASSWORD_LIFE_TIME UNLIMITED
SQL> conn darren/darren
ERROR:
ORA-28002: the password will expire within 7 days
Connected.
SQL> set autotrace on;
ERROR:
ORA-28002: the password will expire within 7 days
SP2-0619: Error while connecting
SP2-0611: Error enabling STATISTICS report
还是同样的错误,说明在用户密码即将过期时,再修改profile是不会对密码即将过期的用户生效的。应该采用重设用户密码(密码可以与之前的密码一样)的方法。
SQL> alter user darren identified by darren;
User altered.
SQL> conn darren/darren
Connected.
SQL> set autotrace on;
此时成功开启autotrace功能。
再尝试另外一种情景,在用户登录后修改用户密码,但不重新登录,尝试开启autotrace。
SQL> alter user darren identified by darren
2 ;
User altered.
SQL> set autotrace on;
ERROR:
ORA-01017: invalid username/password; logon denied
SP2-0619: Error while connecting
SP2-0611: Error enabling STATISTICS report