如果 Oracle 密码过期已经过期了, 首先需要修改密码, 然后设置密码为无限期. 修改以 sys 用户登陆.
修改密码: alter user username identified by password 密码可以和之前的密码相同也可以不同.
修改数据库密码为无限期:
Oracle 的密码过期规则是用 Profile 来管理的, 系统默认只有一个 Profile(DEFAULT), 该 profile 的密码过期规则为 180 天. 当超出这个时间时, 密码就会过期, 数据库不能连接. Oracle11g 启动参数 resource_limit 无论设置为 false 还是 true, 密码有效期都是生效的.
有两种处理方式:
一, 直接修改用户对应的 Profile 的密码
1, 查看用户的 proifle 是哪个, 一般是 default:
select username,PROFILE FROM dba_users;
2, 查看指定概要文件 (如 default) 的密码有效期设置:
select * FROM dba_profiles s Where s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3, 将密码有效期由默认的 180 天修改成 "无限制":
alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库, 会立即生效.
二, 新建一个 Profile 文件, 设置其密码, 并设置其为当前用户的 Profile 文件
1, 新建 profile "PASSWD_UNLIMIT", 规则与 DEFAULT 一致(因为一个 profile 中包含很多的项目, 我们此时只想修改过期规则, 其他的不变)
2, 修改 profile "PASSWD_UNLIMIT", 修改过期规则为 UNLIMITED
3, 将'MESSERIES'用户适用新的 profile "PASSWD_UNLIMIT"
- SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
- SELECT * FROM dba_profiles s ;
3: -- 查看用户 profile
4: select username, user_id, account_status,expiry_date, profile from dba_users where username = username;
5: --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
12: LOGICAL_READS_PER_SESSION UNLIMITED
13: LOGICAL_READS_PER_CALL UNLIMITED
来源: http://www.linuxidc.com/Linux/2018-05/152289.htm