12c多租户理解

时间:2022-06-29 20:02:09
Oracle 12C推出了一个新特性,叫多租户(Multitenant),据说,这是甲骨文向云计算或者云数据库迈出的一大步。我仔细研究了一下“多租户”的概念,和实际的应用,看不出它与云计算有几毛钱关系。“多租户”确实能够给数据库的管理带来很多便捷(如数据库的移动),也能节省成本,不过,“多租户”对性能的影响,以及如何高效使用内存,还有待考证。



多租户最重要的2个概念是容器数据库(CDB,multitenant container database)和可热插拔数据库(pluggable databases,PDB)。CDB和PDB比较难于理解,我们就不用按照官方的文档进行解释了。大家可以把CDB想象成一个大的容器,这个大的容易在物理上是一个整体,在这个大的容器中还有一些小的容器,一个CDB含有3种类型的容器(如下图所示):



12c多租户理解



1) root容器,包含元数据信息



2) seed容器,它就是一个模板,新的PDB可以基于这个模板进行创建



3) PDB,也是最重要的,包含用户数据,我们的创建的表就放在这里。root和seed主要出于管理的目的。



   CDB其实就是我们以前的数据库,只是它被分成了几部分,每一部分(每个PDB)都能作为一个整体(数据库)对外独立提供服务,就好像你看到了多个以前的Oracle数据库。PDB有点像Schema(模式),最大的差别是,对外界来说,它是一个独立的数据库。暂时不能理解CDB和PDB的概念,也没有关系!!!看完后续的实验,估计你就明白了。



多租户(Multitenant)的好处是:



1)节省成本



2)数据便捷移动



3)职权分离



4)减少数据库管理任务



5)最适合大的数据中心项目




此外,还需要记住下面总结出来的一些有关CDB和PDB的概念:



1)每个CDB有一个活动的UNDO表空间(active undo tablespace)



2)redo log属于CDB,而不是PDB

3)控制文件属于CDB,而不是PDB



4)每个PDB都有一个SYSAUX表空间(CDB也有一个SYSAUX表空间)



5)每个PDB都有一个SYSTEM表空间(CDB也有一个SYSTEM表空间)



6)每个PDB有一个临时表空间(可选)(CDB也有一个临时表空间,供所有的PDB共享)