oracle12c CDB和PDB的转换

ORACLE12c中添加了多租户容器和可插入数据库体系结构。其中,有几个概念我们必须知道。

多租户容器

:即多租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库,这个特性允许在CDB容器数据库中创建并且维护多个数据库,在CDB中创建的数据库被称为PDB,每个PDB在CDB中是相互独立存在的,在单独使用PDB时,与普通数据库无任何区别。
CDB根容器数据库创建后,将至少包含两个容器。根容器CDB$ROOT是环境的管理容器。其主要作用就是容纳所有相关的PDB的元数据,以及在CDB中对所有的PDB进行管理。

CDB:

CDB 是数据库,由实例安装和打开。根容器(CDB)是管理共享资源的容器。其中主要组件:控制文件,撤销表空间,重做日,实例SGA和后台进程,数据字典,公用用户和角色。
根容器至少四个表空间:SYSTEM SYSAUX UNDO TEMP。根容器是唯一一个可以不通过数据库监听器来连接的容器。

PDB:

PDB即pluggable database,可插入数据库。pdb只有两种状态,包括插入状态和拔出状态。pdb共享cdb的资源,其实它们就是一组表空间,用户可以连接上pdb,就好像在访问真正的数据库一样。每一个PDB容器有独特的容器ID和容器名,这些记录在控制文件中,通过视图V C O N T A I N E R 和 V CONTAINER和V CONTAINERVPDBS显示。当连接到一个可插入容器时,会过滤掉没有引用当前容器的行。
每一个可插入数据库都有一个唯一的全局名。这是容器的名称,用作通过数据库监听器注册的默认服务。

PDB$SEED:

seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDB S E E D , 是 创 建 新 的 P D B 的 模 板 , 你 可 以 连 接 P D B SEED,是创建新的 PDB的模板,你可以连接PDB SEEDPDBPDBSEED,但是不能执行任何事物,因为PDB$SEED是只读的,不可进行修改

CDB切换pdb:

1.连接数据库 sqlplus / as sysdba

oracle12c CDB和PDB的转换_第1张图片
2.开启数据库: startup(现在我们处于cdb中)

在这里插入图片描述
3.查看pdbs show pdbs

oracle12c CDB和PDB的转换_第2张图片
可以看到现在我有两个pdb,分别是种子pdb和自己创建的pdbsu.

4.切换到pdbsu中 : alter session set container=pdbsu;
oracle12c CDB和PDB的转换_第3张图片
5.查看当前pdb详情。 show pdbs;
oracle12c CDB和PDB的转换_第4张图片
6.切换回cdb’中 : alter session set container=cdb$root;

在这里插入图片描述
7,切换到种子pdb : alter session set container=pdb$seed;

oracle12c CDB和PDB的转换_第5张图片
8.可以看到我们可以切换到任何pdb,但是要注意,种子pdb不能写入哦,就是不可以创建对象,删除数据等。

你可能感兴趣的:(Oracle,oracle12c,pdb,CDB)