线上服务突然无法连接Oracle,服务报密码过期错误,正常情况下密码过期有两种情况:
1、由于Oracle中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致。
2、由于Oracle中默认在default概要文件中设置了“FAILED_LOGIN_ATTEMPTS=10次”,当输入密码错误次数达到设置值将导致此问题。
Oracle安装时并未在意密码过期时间,密码默认过期时间设置的是180天,过期后服务无法连接。正常情况下可以通过下面指令登录oracle:
sqlplus username/[email protected] as sysdba;(sqlplus 用户名/密码@数据库本地服务名 as sysdba;)
现在特定账号无法使用,在切换到Oracle服务器对应的用户后通过如下方式连接oracle:
sqlplus / as sysdba
而后进入查看默认密码过期时间设置:
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
通过如下指令修改密码过期时间配置为无时间限制:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
最后解锁对应服务使用的账号密码:
alter user username(用户名) identified by oldPassword(原来的密码) account unlock;
最终线上服务恢复正常。