【赵渝强老师】Oracle多租户容器数据库

在早期的Oracle数据库的版本中,一般情况下一个数据库服务器只创建一个数据库。当创建的数据库比较多的时候,就需要更多的数据库服务器。这对服务器资源(CPU、内存、存储)来说是一种浪费。从Oracle数据库 12c开始,Oracle数据库引入了多租户特性,即容器数据库。该特性可以在一个数据库服务器上创建容器数据库,并管理多个可插拔数据库。从而降低了成本并提高了服务器资源的利用率。
![]() |
|---|
| 点击这里查看视频讲解:【赵渝强老师】Oracle多租户容器数据库 |
Oracle Multitenant Container Database(CDB),即多租户容器数据库是从Oracle 12c引入的一个新的特性。它指的是可以容纳一个或者多个可插拔数据库(Pluggable Database,简称PDB)的数据库,这个特性允许在CDB容器数据库中的体系架构创建并且维护多个数据库。在CDB容器数据库中创建的数据库就是PDB数据库,而每个PDB在CDB中是相互独立存在的。在单独使用PDB时,与普通数据库无任何区别。CDB容器数据库也叫作根数据库,其主要作用就是容纳并管理所有相关的PDB数据库及其元数据。CDB也可以单独使用,从操作使用上看,CDB也与普通数据库无任何区别。下图展示了多租户容器数据库的体系架构。

从图中可以看出,Oracle多租户容器数据库的体系架构由三个部分组成,它们分别是:Root、PDB Seed和PDBs。下表详细说明了每一部分的功能和作用。

从Oracle数据库 12c R2版本开始,Oracle对多租户容器数据库的功能进行了增强,在CDB root容器中可以创建一个叫做Application Root的容器,可在其内创建多个依赖于Application root的Application PDB。如下图所示。

要使用Oracle数据库提供的多租户容器数据库的功能,首先就必须要创建CDB的环境。其本质就是创建CDB的根数据库Root。创建CDB中的根数据库Root可以通过DBCA的图形工具来进行创建,也可以通过执行SQL的脚本来创建。
-
使用DBCA创建根数据库Root
![image]()
-
使用SQL脚本创建根数据库Root
SQL> create database cdb2
user sys identified by password user system identified by password
logfile group 1 ('/u01/app/oradata/cdb2/redo1a.log',
'/u02/app/oradata/cdb2/redo1b.log') size 100m,
group 2 ('/u01/app/oradata/cdb2/redo2a.log',
'/u02/app/oradata/cdb2/redo2b.log') size 100m
character set al32utf8 national character set al16utf16
extent management local datafile '/u01/app/oradata/cdb2/system01.dbf' size 325m
sysaux datafile '/u01/app/oradata/cdb2/sysaux01.dbf' size 325m
default temporary tablespace tempts1 tempfile '/u01/app/oradata/cdb2/temp01.dbf' size 20m
undo tablespace undotbs datafile '/u01/app/oradata/cdb2/undotbs01.dbf' size 200m
enable pluggable database
seed file_name_convert = ('/u01/app/oradata/cdb2',
'/u01/app/oradata/cdb2/seed');
在成功创建了CDB环境后,就可以进一步基于根数据库Root来创建多个PDB数据库。
-
使用DBCA创建PDB
![image]()
-
使用SQL脚本创建PDB
SQL> create pluggable database cdb1pdb3 admin user pdb3sys identified by password
file_name_convert= ('/u01/app/oracle/oradata/CDB1/pdbseed',
'/u01/app/oracle/oradata/CDB1/cdb1pdb3');




浙公网安备 33010602011771号