多租户容器数据库架构简介

从OracleDatabase12c开始,ORACLE提供了云化数据库架构,提出了DBaaS的解决方案,其中最重要的就是容器和多租户,今天就来梳理一下多租户容器数据库的基础架构。

在12c中的c就是“Cloud”的意思,从实现来看,是multitenantcontainerdatabase(CDB),也即多租户容器数据库(下面我们也简称为CDB)。

什么是容器

容器,Container,其实就是由用户、模式、表、索引、序列等对象组成的集合,可以将其认为是12c之前的一个数据库。每个容器都具备唯一的标识和名称。从下面的查询结果可以验证该数据库是否是一个多租户容器数据库。

CDBroot

CDBroot通常简称为root,它是所有容器的根容器,即标号为1,名称为CDB$ROOT的容器。root中存储了管理所有PDB的系统元数据信息,当然它里面也可以存储用户数据,但是ORACLE官方是不建议这样做的。

SystemContainer

SystemContainer通常称为应用系统容器,是介于root和PDB之间的一层,它属于root,并且可以包含多个PDB。只需要在CREATEPLUGGABLEDATABASE后面标注上ASAPPLICATIONCONTAINER即可。

创建完系统容器之后,可以使用如下SQL查看:

PDB

PDB通常称为私有数据库,是用户数据的集合,包含登陆账号、表、索引等相关数据结构。每个PDB被SYS用户所拥有,CDB中的其他用户也可以连接。

PDB可以插入到根容器中,也可以插入到应用系统容器中。如上图,在根容器、每个应用系统容器都有3个PDB。

首先创建一个属于根容器的PDB,名称为pdb1,如下所示:

在应用系统容器saas_sales_ac创建一个PDB,名称为pdb2,如下所示:

下面的数据可以进行验证,PDB2的应用系统容器为4,即应用系统容器SAAS_SALES_AC。从APPLICATION_ROOT列为YES,可看成SAAS_SALES_AC缺省是一个应用系统容器。从PDB_COUNT列可以看成在根容器和应用系统容器中已经创建的PDB的数量。

从上图可以看成在一个CDB多租户容器数据库中,存在一个CDB管理员,其主要工作是为了分配PDB给不同的应用;hrpdb数据库和salespdb数据库分别有一个PDB管理员,分别管理自己负责的数据库。

PDB$SEED

在CDB安装完成后,标号为2的是一个PDB,它是一个特殊的PDB,其不能以读写模式打开,只能置为只读模式。这个PDB是用于创建新PDB时,系统默认提供的模板数据库。当然PDB也可以基于其他PDB进行创建,如下所示,pdb3是从pdb1进行创建的:

简化运维安全可靠

让运维更轻松

赞赏

长按







































白癜风的偏方治疗
治白癜风贵阳哪家医院好



转载请注明:http://www.xcqg58.com/xxzl/6732.html