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

b425

在早期的Oracle数据库的版本中,一般情况下一个数据库服务器只创建一个数据库。当创建的数据库比较多的时候,就需要更多的数据库服务器。这对服务器资源(CPU、内存、存储)来说是一种浪费。从Oracle数据库 12c开始,Oracle数据库引入了多租户特性,即容器数据库。该特性可以在一个数据库服务器上创建容器数据库,并管理多个可插拔数据库。从而降低了成本并提高了服务器资源的利用率。

image.png
点击这里查看视频讲解:【赵渝强老师】Oracle多租户容器数据库

Oracle Multitenant Container Database(CDB),即多租户容器数据库是从Oracle 12c引入的一个新的特性。它指的是可以容纳一个或者多个可插拔数据库(Pluggable Database,简称PDB)的数据库,这个特性允许在CDB容器数据库中的体系架构创建并且维护多个数据库。在CDB容器数据库中创建的数据库就是PDB数据库,而每个PDB在CDB中是相互独立存在的。在单独使用PDB时,与普通数据库无任何区别。CDB容器数据库也叫作根数据库,其主要作用就是容纳并管理所有相关的PDB数据库及其元数据。CDB也可以单独使用,从操作使用上看,CDB也与普通数据库无任何区别。下图展示了多租户容器数据库的体系架构。
image

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

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

要使用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'); 
posted @ 2026-01-20 13:33  赵渝强老师  阅读(1)  评论(0)    收藏  举报