Oracle Database 12C 之多租户(一)

发布讲师:史老师

发布时间:2018年07月04日

浏览量:4271(次)

简介:

关于可插拔数据库,或者叫做多租户环境这一部分的内容,在oracle 12c的官方文档Database Administrator's Guide中,其第六部分即为多租户环境管理。从第36到第46章,一共用了11章的内容来详细介绍其内容和相关操作实验。链接如下:

https://docs.oracle.com/database/121/ADMIN/toc.htm


另外,在oracle官方网站上,也有关于多租户的白皮书,链接如下:

http://www.oracle.com/technetwork/database/multitenant/overview/index.html


可见,这一部分的内容,可以算得上是12c中最重要的新特性之一了,甚至几乎木有之一。因此,这块的内容,我把它作为Oracle Database 12C 学习系列的最后一部分内容,算作压轴了吧。当然,12c新特性细节太多,比如说em12c等等,后面我们会继续深入研究。

这一系列的内容,以多租户白皮书为主,参考12c官方文档中的管理员手册,以及Darl Kuhn的《深入理解Oracle 12c 数据库管理》第2版,同时再间以查阅网上诸多的文章整理而成。当然,中间会有不少实验。数据库版本为12.1.0.2,os为rhel6.4 64位。



Oracle Multitenant(多租户)为oracle数据库12c企业版中的一个新特性,它可以通过简化集成、配置以及升级等多方面的工作来帮助用户降低IT成本。该架构允许使用一个容器数据库(container database)来管理多个可插拔数据。同时还照旧支持oracle的其他功能,比如说RAC,或者ADG等。一个现有的数据库,可以经过简单的调整,就能够成为一个可插拔数据库。并且不需要对连接到该数据库上的应用程序做任何改动。使用该架构,可以有如下好处:


1,高整合密度。

连接在一个容器数据库上的多个可插拔数据库能够共享内存及后台进程。从而可以让你在单一平台上管理并维护多个数据库。

2,使用SQL实现快速配置与克隆

一个可插拔数据库能够被从一个容器数据库上拔出,然后插到另外一个容器数据库上。当然,你还可以克隆这个可插拔数据库。这些操作都可以通过sql完成,并且只需要数秒钟就可以搞定。

3,快速打补丁及升级

给一个容器数据库打补丁,可以让该补丁在所有连接到该容器数据库的可插拔数据库上生效。如果只想给一个可插拔数据库打补丁,你只需要将其拔出即可。

4,像管理一个数据库那样来管理多个数据库

通过将现有的多个数据库整合到一起,我们管理这些数据库的时候,就像是在管理一个数据库。比如,备份操作和灾难恢复等可以在容器数据库级别完成。

5,可插拔数据库之间的动态资源管理

12c中,资源管理器(Resource Manager)可以在一个容器数据库中的多个可插拔数据库之间动态管理资源分配。


在多租户架构中,将会有如下三个组成部分:

1,ROOT

一个名为CDB$ROOT的根容器。该容器包含有主数据字典视图,内容为与根容器有关的元数据和所有插在其上的可插拔数据库的信息。

2,Seed

一个名为PDB$SEED的种子容器。用来提供数据文件和元数据模板,从而创建新的可插拔数据库。

3,PDBs

0个,1个或者多个可插拔数据库。(12.1中,最多可以到252个)。每个可插拔数据库都是独立的,功能与非CBD数据库一样。每个可插拔数据库都会有自己的数据文件和对象。当用户连接到可插拔数据库时,不会感觉到CDB中的根容器和其他可插拔数据库的存在。也就是物理集中,逻辑隔离。


例如我们当前的实验环境:

SYS@ora12c> show pdbs;


CON_ID CON_NAME  OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED  READ ONLY NO

 3 ORA12C_PDB1  MOUNTED

--当前有一个PDB

SYS@ora12c> show user con_id con_name

USER is "SYS"


CON_ID

------------------------------

1


CON_NAME

------------------------------

CDB$ROOT

--当前操作的数据库为根容器数据库。


基于这种多租户的环境,oracle从12c开始引入了CDB级别的数据字典。也就是说,在原有的DBA_,ALL_,USER_级别的数据字典之上,又新添加了一个级别。CDB级别的视图,含有CDB中所有容器(根,种子,以及所有可插拔数据库)的信息。例如,CDB_USERS。