ORA-28001,oracle数据库密码过期问题,CBD切换PDB

用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?

  1. SQL> show pdbs  
  2.   
  3.     CON_ID CON_NAME           OPEN MODE  RESTRICTED  
  4. ---------- ------------------------------ ---------- ----------  
  5.      2 PDB$SEED           READ ONLY  NO  
  6.      3 TESTP1             MOUNTED  
  7. SQL>   

上图中 PDB$SEED 并不是一个 PDB 而是一个 PDB的模板,状态始终是 READ ONLY。TESTP1 是一个PDB。

 

2. 切换到 TESTP1。

  1. SQL> alter session set container=TESTP1;  
  2.   
  3. Session altered.  
  4.   
  5. SQL> show pdbs;  
  6.   
  7.     CON_ID CON_NAME           OPEN MODE  RESTRICTED  
  8. ---------- ------------------------------ ---------- ----------  
  9.      3 TESTP1             MOUNTED  
  10. SQL>   

3. 切回到 CDB。

  1. SQL> alter session set container=CDB$ROOT;  
  2.   
  3. Session altered.  
  4.   
  5. SQL> show pdbs  
  6.   
  7.     CON_ID CON_NAME           OPEN MODE  RESTRICTED  
  8. ---------- ------------------------------ ---------- ----------  
  9.      2 PDB$SEED           READ ONLY  NO  
  10.      3 TESTP1             MOUNTED  
  11. SQL>   
  12. 切换成功后,用select username from dba_user,查看下是否有这个用户名,如果有,从最上面在开始执行一下。设置成功后,在切换到原来车的cbd或pdb
posted @ 2019-06-04 12:55  Aftersoon_sun  阅读(702)  评论(0编辑  收藏  举报