【赵渝强老师】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

  • 使用SQL脚本创建根数据库Root

sql 复制代码
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

  • 使用SQL脚本创建PDB

sql 复制代码
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'); 
相关推荐
IT技术分享社区3 小时前
GTID 结构升级 + JSON 视图强化,MySQL 9.6 创新版带来哪些性能提升?
数据库·程序员
阿杰 AJie3 小时前
MySQL 聚合函数
android·数据库·mysql
菜鸟小九3 小时前
redis高级(存储能力问题)
数据库·redis·缓存
+VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue酒店预订系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
hunter14504 小时前
2026.1.20 sql server简单操作
数据库·oracle
达梦产品与服务4 小时前
SQLark 实战 | 如何快速导入数据至达梦、Oracle、MySQL、PG 数据库
mysql·oracle·达梦数据库·数据导入·pg数据库
liux35284 小时前
MySQL集群架构:MySQL InnoDB Cluster (MIC)详解(十一)
数据库·mysql·架构
小北方城市网4 小时前
MySQL 索引优化实战:从慢查询到高性能
数据库·spring boot·后端·mysql·rabbitmq·mybatis·java-rabbitmq
Chan164 小时前
《Java并发编程的艺术》| 并发关键字与 JMM 核心规则
java·开发语言·数据库·spring boot·java-ee·intellij-idea·juc