- 问题现象
- Oracle12c中,默认将scott与sh放到了可插入数据库PDB中,而在一个CDB(CDB$ROOT)下,会包含多个PDB。下面讲解如何找回此用户;
- 原因分析
- 处理步骤
- 使用sys用户以管理员方式登录:
- conn sys/change_on_install as sysdba;
- 此时为sys用户登录,可使用如下语句查看当前容器名称:
- show con_name; --下图表示,sys在CDB容器中;
- 将CDB切换到PDB:
- alter session se container = pdborcl; --注意,orcl安装oracle的时候,设置的sid名称
- 切换完成后在执行show con_name; --返回的结果是pdbmldn,表示此时在PDB之中;
- alter session se container = pdborcl; --注意,orcl安装oracle的时候,设置的sid名称
- 数据库可能并未打开,打开pdbmldn可插入数据库
- alter database pdborcl open;
- 此类语法只能在PDB容器下运行,在CDB下运行,要在最前面加上pluggable命令;
- alter pluggable database pdbmldn open;
- alter database pdborcl open;
- 在pdbmldn下查看scott与sh用户是否存在:
- SELECT username FROM dba_users WHERE username='SCOTT' OR username='SH' ;
- 这时会返回两条数据,分别是scott用户与sh用户
- 查询scott用户:
- SELECT * FROM scott.emp ;
- 每当用户重新登录数据库时,默认使用CDB容器,如果说现在用户已经在PDB容器下,切换回CDB容器,可用如下命令:
- ALTER SESSION SET CONTAINER=CDB$ROOT ;
- 使用sys用户以管理员方式登录:
找回原始的scott用户与sh用户
最新推荐文章于 2023-08-23 20:27:44 发布