修改Oracle数据库密码和相关报错处理
- 一般的Oracle数据库修改密码只需执行一条SQL就行
--NEWPWD为想要修改的密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD";
--或者,OLDPWD为旧密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD" REPLACE "OLDPWD";
- 修改密码SQL报错及处理方法
- 在处理报错之前我们先熟悉Oracle数据库密码的profile
执行下面这段代码:
- 在处理报错之前我们先熟悉Oracle数据库密码的profile
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_TYPE = 'PASSWORD';
得到结果:
这里面有很多参数,参数代表的意思分别为:
FAILED_LOGIN_ATTEMPTS -> 密码输入错误数次,达到改次数则锁定账户
PASSWORD_LIFE_TIME -> 密码有效期
PASSWORD_REUSE_TIME -> 限制N天内密码不能设置和旧密码一样
PASSWORD_REUSE_MAX -> 想要在PASSWORD_REUSE_TIME限制的时间内使用回旧密码,至少要修改密码的次数
PASSWORD_VERIFY_FUNCTION -> 密码校验规则
PASSWORD_LOCK_TIME -> 账户被锁之后,自动解锁的时间
PASSWORD_GRACE_TIME -> 如果PASSWORD_LIFE_TIME设置的期限快到,提前N天提示用户(一般为:ORA-28002: the password will expire within N days)
注:以上参数的值均为一个整数或者UNLIMITED(无限制)
- 报错:
- ORA-28002: the password will expire within N days
- ORA-28007: 无法重新使用口令
- ORA-20001:等
- 处理方法
1.先确定账户所用的profile
--USERNAME为用户名称,一般为DEFAULT
SELECT USERNAME,PROFILE FROM DBA_USERS WHERE USERNAME = 'USERNAME';
2.得到profile之后再查看对应的配置
--注意如果步骤一查出来的值不为DEFAULT,需要替换。
--记得记录下相关参数的值, 方便修改密码后还原配置
SELECT * FROM DBA_PROFILES WHERE PROFILE ='DEFAULT' AND RESOURCE_TYPE = 'PASSWORD';
3.处理方法
--a先将PASSWORD_LIFE_TIME(密码有效期)这个参数的值改成UNLIMITED(无限制)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
--b去掉密码校验规则
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
--c不限制密码重复使用
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX UNLIMITED;
--一般报错1无需执行bc,本人比较懒,不想考虑太多, 每次全部执行一边, 肯定能修改密码了
--再执行修改密码的语句
--NEWPWD为想要修改的密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD";
--或者,OLDPWD为旧密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD" REPLACE "OLDPWD";