用sqlplus / as sysdba? 管理员登陆,首先登陆可能是进入到了CBD.
后台报ORA-28001: the password has expired 密码超时
登录数据库服务器(或者使用cmd),
1.使用 sqlplus / as sysdba命令进入oracle数据库
2.使用:select * from dba_profiles where profile=‘DEFAULT‘ and resource_name=‘PASSWORD_LIFE_TIME‘;
语句查看密码的有效天数为180天,也就是三个月
?
3.使用:alter profile default limit password_life_time unlimited; 命令改为永久生效
?
4.验证
?
5.进行以上步骤之后需要改变密码,否则还会出现password has expired异常
修改用户密码:?alter user editor identified by editor;
?
注:如果修改成功,则问题已经解决,如果修改密码的时候,提示如下图所示,则说明可能是在CBD下,因为在cbd下没有这个用户名,这是就需要切换到pbd
?
?切换CBD:
Oracle 12c 开始支持 PLUGGABLE DATABASE,并且提供了一个方法在CDB和PDB之间切换。
?
1. 使用 show pdbs 可以确认当前有哪些PDB?
[sql]?
view plain?
copy
- SQL>?show?pdbs??
- ??
- ????CON_ID?CON_NAME???????????OPEN?MODE??RESTRICTED??
- ----------?------------------------------?----------?----------??
- ?????2?PDB$SEED???????????READ?ONLY??NO??
- ?????3?TESTP1?????????????MOUNTED??
- SQL>???
上图中 PDB$SEED 并不是一个 PDB 而是一个 PDB的模板,状态始终是 READ ONLY。TESTP1 是一个PDB。
?
2. 切换到 TESTP1。
[sql]?
view plain?
copy
- SQL>?alter?session?set?container=TESTP1;??
- ??
- Session?altered.??
- ??
- SQL>?show?pdbs;??
- ??
- ????CON_ID?CON_NAME???????????OPEN?MODE??RESTRICTED??
- ----------?------------------------------?----------?----------??
- ?????3?TESTP1?????????????MOUNTED??
- SQL>???
3. 切回到 CDB。
[sql]?
view plain?
copy
- SQL>?alter?session?set?container=CDB$ROOT;??
- ??
- Session?altered.??
- ??
- SQL>?show?pdbs??
- ??
- ????CON_ID?CON_NAME???????????OPEN?MODE??RESTRICTED??
- ----------?------------------------------?----------?----------??
- ?????2?PDB$SEED???????????READ?ONLY??NO??
- ?????3?TESTP1?????????????MOUNTED??
- SQL>? ?
- 切换成功后,用select username from dba_user,查看下是否有这个用户名,如果有,从最上面在开始执行一下。设置成功后,在切换到原来车的cbd或pdb