国开行与pdb Oracle12C新特性

,甲骨文12 c引入了国开行与PDB的新特性,在甲骨文12 c数据库引入的多租用户环境(多租户环境)中,允许一个数据库容器(国开行)承载多个可插拔数据库(PDB) .CDB全称数据库,为容器中文翻译为数据库容器,PDB全称为可插入数据库,即可插拔数据库。在Oracle 12 c之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入甲骨文12 c后,实例与数据库可以是一对多的关系。下面是官方文档关于国开行与PDB的关系图。

,  Oracle12C新特性,国开行与PDB

,,,

,,其实大家如果对SQL SERVER比较熟悉的话,这种国开行与PDB是不是感觉和SQL SERVER的单实例多数据库架构是一回事呢。像PDB美元种子可以看成是主人,msdb等系统数据库,PDB分子可以看成用户创建的数据库。而可插拔的概念与SQL SERVER中的用户数据库的分离,附加其实就是那么一回事。看来甲骨文也“抄袭”了一把SQL SERVER的概念,只是改头换面的包装了一番。

,

,

<强> 1,国开行组件组件(国开行)

,

一个国开行数据库容器包含了下面一些组件:


根又叫国开行根美元,存储着甲骨文提供的元数据和普通用户来说,元数据的一个例子是甲骨文提供的PL/SQL包的源代码,普通用户是指在每个容器中都存在的用户。


,种子又叫PDB美元种子,这个是你创建PDB分子数据库的模板,你不能在种子中添加或修改一个对象。一个国开行中有且只能有一个种子。这个感,念个人感觉非常类似SQL SERVER中模型的数据库。


,,国开行中可以有一个或多个PDB分子,PDB分子向后兼容,可以像以前在数据库中那样操作PDB分子,这里指大多数常规操作。

这些组件中的每一个都可以被称为一个容器。因此,根(根)是一个容器,种子(种子)是一个容器,每个PDB是一个容器。每个容器在国开行中都有一个独一无二的的ID和名称。


①:一个国开行可以包含253个PDB(去掉一个是种子还能创建252个PDB)。

②:根、种子以及每一个PDB的数据文件是独立的。

③:一个单实例的国开行有一个重做日志;RAC环境中每个实例有一个重做日志。

④:只有一组后台进程,它们被根和所有PDB共享。

⑤:根的全局数据库名就是国开行的全局数据库名;PDB的全局数据库名是由PDB名字和DB_DOMAIN参数共同定义的。


⑥:一个国开行使用一个SPFILE或者一个PFILE,其中为根设置的参数的值可以被PDB继承。另外,也可以使用改变系统语句来设置PDB的参数。对参数文件执行,,操作时,必须使用常见的用户并且使用SYSDBA, ASSYSOPER,作为SYSBACKUP来连接数据库。要创建国开行,必须要将初始化参数ENABLE_PLUGGABLE_DATABASE的,,值设置为真的。


⑦:所有PDB的字符集都使用国开行的字符集。

,,,可以设置所有PDB的时区与国开行相同,也可以单独为PDB设置时区。

,,,块大小被应用于整个国开行。

,,,一个国开行也仅有一个控制文件(可以多路复用)。


⑧:根与每一个PDB都有自己的SYSAUX表空间和系统表空间。可以为根和每一个PDB设置默认表空间。而默认的临时表空间对于整个国开行只有一个,但是可以为,,每个PDB创建临时表空间。


⑨:撤销表空间对于国开行是唯一的,在国开行中初始化参数UNDO_MANAGEMENT必须被设置为汽车。当前容器为PDB时,无法通过数据字典视图查看撤销表空间,只能通,,过动态性能视图。


 》可以把多个PDB集成进一个平台。

 》可以快速提供一个新的PDB或一个已有PDB的克隆。

 》通过拔插技术,可以快速把存在的数据库重新部署到一个新平台上。

 》多个PDB数据库补丁或升级一次完成。

 》通过把单个PDB拔插到较高版本的不同CDB,可以补丁或升级一个PDB。

 》从同一个CDB中众多PDB中分离出某个PDB的内容。

 》分离这些PDB应用管理员的责任。

 

 》在一个CDB中,你可以拥有很多PDB。

 》PDB和12.1之前版本的普通数据库是向后兼容的。

 》PDB对应用是透明的——你不需要改变客户端代码或数据库对象。

 》RAC中每个实例作为一个整体打开CDB(因此CDB和其中的PDB数据库版本都是相同的)。

国开行与pdb Oracle12C新特性