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和容器名,这些记录在控制文件中,通过视图VCONTAINER和VPDBS显示。当连接到一个可插入容器时,会过滤掉没有引用当前容器的行。
每一个可插入数据库都有一个唯一的全局名。这是容器的名称,用作通过数据库监听器注册的默认服务。
PDB$SEED:
seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDBSEED,是创建新的PDB的模板,你可以连接PDBSEED,但是不能执行任何事物,因为PDB$SEED是只读的,不可进行修改
CDB切换pdb:
1.连接数据库 sqlplus / as sysdba
2.开启数据库: startup(现在我们处于cdb中)
3.查看pdbs show pdbs
可以看到现在我有两个pdb,分别是种子pdb和自己创建的pdbsu.
4.切换到pdbsu中 : alter session set container=pdbsu;
5.查看当前pdb详情。 show pdbs;
6.切换回cdb’中 : alter session set container=cdb$root;
7,切换到种子pdb : alter session set container=pdb$seed;
8.可以看到我们可以切换到任何pdb,但是要注意,种子pdb不能写入哦,就是不可以创建对象,删除数据等。