共计 1570 个字符,预计需要花费 4 分钟才能阅读完成。
一、概述
1、Oracle 12c 可插拔数据库体系结构
Oracle 12c 中引入了一个新功能就是 Oracle Multitenant,这个功能可以在多租户容器数据库中,创建并维护许多个可插拔数据库。Oracle Multitenant 是 Oracle 企业版中需要额外付费的组件。然而,在所有 Oracle 版本中都可以在一个可插拔数据库中免费使用它。
多租户容器数据库(CDB)是指能够容纳一个或者多个可插拔数据库的数据库。容器是指 CDB 中的数据文件和元数据的集合。可插拔数据库是指可以通过克隆另一个数据库轻松创建的数据容器。如果有必要,也可将可插拔数据库从一个 CDB 传送到另一个 CDB。
所有含有一组主数据文件和元数据的 CDB 都是根容器。每个 CDB 也会含有种子容器,它是用于创建其它可插拔数据库的模板。每个 CDB 都由一个根容器、一个种子容器和 0 个、1 个或多个可插拔数据库构成。
2、容器数据库与可插拔数据库
1、ORACLE MULTITEMENT CONTAINER DATABASE(CDB),即多容器数据库
是ORACLE12c 新引入的特性 , 这个特性允许 CDB 容器数据库中创建并且维护多个数据库,在 CDB 中创建的数据库被称为 PDB,每个 PDB 在 CDB 中是独立的,在单独使用 PDB 时与普通数据库无差别。CDB 根容器数据库的主要作用就是容纳所有相关的 PDB 元数据,以及在 CDB 中对虽有 PDB 进行管理。
2、多租户环境组成
(1)ROOT:ROOT 容器数据库,是 CDB 环境中的根数据库,在跟数据库中含有主数据字典视图,其中包含了与 ROOT 容器有关的元数据和 CDB 中包含的所有 PDB 信息,在 CDB 环境中被标识为 CDB$ROOT,每个 CDB 环境中只能有一个 ROOT 容器数据库。
(2)PDB$SEED:PDB$SEED 为 PDB 的种子,其中提供了数据文件,在 PDB 环境中被标识为 PDB$SEED,是创建 PDB 的模板,可以连接 PDB$SEED 但是不能执行任何事务,因为 PDB$SEED 是只读的,不可修改。
(3)PDBS:PDBS 数据库,在 CDB 环境中每个 PDB 都是独立存在的, 与传统 ORACLE 数据库无差别,每个 PDB 拥有自己的数据文件和 OBJECTS,唯一的区别就是 PDB 可以插入到 PDB 中,以及从 CDB 中拔出。当用户连接到 PDB 时不会感觉到根容器和其他 PDB 的存在。
二、实验环境
主机 | 操作系统 | IP 地址 | 数据库版本 |
---|---|---|---|
Oracle | CentOS 7 | 192.168.100.135 | oracle 12c |
进入 Oracle
[root@HOSTNAMEoracle ~]# su - oracle
[oracle@HOSTNAMEoracle ~]$ sqlplus / as sysdba
三、CDB 与 PDB 操作
查看当前所在的容器
SQL> show con_name
–
查询数据库的所有容器
SQL> show pdbs;
–
更改为 orclpdb,PDB 容器
SQL> alter pluggable database orclpdb open; // 修改可插拔库 orclpdb 打开状态
SQL> alter session set container=orclpdb; //CDB 下切换会话到 PDB 中
SQL> show con_name // 查看当前所在的容器
–
SQL> shutdown immediate // 在 PBD 中关闭插拔数据库
插接式数据库已关闭。SQL> startup // 在 PBD 中关闭插拔数据库
插接式数据库已打开。
–
更改回 CDB 容器
SQL> alter session set container=cdb$root; // 切换模式到 CDB
SQL> show con_name // 查看
更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12
: