Oracle:关于 CDB 和 PDB 容器数据库

此文章发布于 19 个月前,部分信息可能已经过时,请自行斟酌确认。

Oracle 12c 开始有了CDB和PDB

CDB与PDB是Oracle 12C引入的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。

CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。

12c中,oracle 将CDB看成一个容器,用来存放数据库。

  • 在CDB中可以有多个PDB,其中存在一个root根容器(PDB$ROOT)、一个种子容器(PDB$SEED)和多个PDBS。
  • 所有的PDB共用一个硬件系统资源、sga和pga、redo、临时段、控制文件、参数文件、还原段(还可对每个PDB单独指定)。

PDB$ROOT

根容器用来做所有容器的跟,用来对每个PDB进行统一管理

  • sqlplus / as sysdba连接进来默认是连接的根容器,需要切换到其他的PDB容器才可以对单独的PDB操作。
  • 其中有 system数据文件、sysaux数据文件、(undo数据文件、temp数据文件、redo、控制文件)。
  • 一般不存放生产数据文件

PDB$SEED

种子容器作为插入PDB的模板而存在

  • 每个CDB都有一个种子容器,且不可对其中对象进行修改。
  • 其中有 system数据文件、sysaux数据文件、其他数据文件。

PDB

新插入容器,该容器用来存放数据库

  • 其中有 system数据文件、sysaux数据文件、其他数据文件。
  • 12c中可以插入多个容器进行统一管理,来减少DBA的工作量。
  • 其中的数据库可以插入或拔出。

用户:

  • 12c中PDB$ROOT中的普通目录可以通过权限分配来访问一个或多个指定的PDB容器,最大权限用户是sysdba
  • 其中PDB也可单独创建普通用户来管理该容器的数据库。
  • PDB资源管理:12c中将多个数据库运行在一个硬件资源上,CDB性能上得到优化。
  • 在CDB中为每个PDB确定使用CPU最低份额,CDB会按照一个PDB份额/分配的总份额数*100%,来保证PDB最低份额数。

管理容器

使用sqlplus登陆(用plsql登陆无法使用show指令)

查询容器是否CDB

select name,cdb,open_mode,con_id from v$database;

查看当前容器

show con_name;

查看已经创建的pdb

show pdbs;
最后修改:2022 年 08 月 24 日 11 : 35 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论