简要概述
Oracle 12c Release 1(12.1)引入了多租户选项,是Oracle数据库历史上最大的架构变化之一,引入了容器数据库(CDB)和可插拔数据库(PDB)的概念。
容器数据库(CDB): 从表面上看,它与传统的Oracle数据库非常相似,因为它包含了大部分您已经熟悉的工作部分(控制文件、数据文件、undo、tempfile、重做日志等)。它还包含所有PDB可见的根容器数据字典对象。
可插拔数据库(PDB): 因为CDB包含数据库主要的工作部分,所以PDB仅需要包含特定于自身的信息。它不需要关注控制文件,重做日志和UNDO等。相反,它只是由数据文件和tempfile组成,以处理它自己的对象。这包括它自己的数据字典,只包含关于特定于PDB的对象的信息。从Oracle 12.2以后,PDB可以而且应该有一个本地undo表空间。
通过分离根容器中的公共数据字典对象和特定于PDB的数据字典对象,为多租户选项提供了灵活性。从PDB的角度来看,数据字典是根数据字典和PDB数据字典的联合,因此在内部PDB感觉非常像一个普通的Oracle数据库。例如,PDB中的DBA_%和ALL_%视图看起来与任何非cdb数据库相同。
Oracle Managed Files (OMF) 和多租户
Oracle建议在使用多租户架构时使用Oracle Managed Files (OMF),因为它简化了许多功能。对于某些功能,OMF的使用似乎是必须的,比如Oracle 12.2中的应用程序容器功能。
创建PDB
由于大部分工作部件已经存在于根容器中,因此创建一个新的PDB是一项相对快速和简单的任务。在创建一个全新的PDP时,PDB是基于种子PDB(PDB$SEED)的副本创建的,因此它只需要进行文件复制。
可以克隆现有的PDB,而不是从种子PDB创建新的PDB。
还可以在远程CDB中创建克隆。
Unpluging和Plugging
多租户选项最强大的功能之一是从CDB中拔出PDB并将其插入到另一个CDB中的能力。这不仅允许轻松地移动数据库,而且还提供了另一种补丁和升级到未来版本的方法。
重新定位 PDB
从Oracle 12.2开始,可以重新定位一个PDB,将它从一个CDB移动到另一个CDB。这比传统的拔插要简单得多。
刷新 PDB
从Oracle 12.2开始,可以从源PDB刷新克隆的PDB,前提是它只以只读模式打开过。
可刷新PDB切换
从Oracle 18c开始,可以切换一个可刷新的PDB。
代理 PDB
从Oracle 12.2开始,可以创建代理PDB,它将SQL发送到远程PDB进行处理。这允许您为远程数据库拥有一个本地端点。
应用程序容器
Oracle 12.2引入了应用程序容器的概念,它就像一个迷你根容器。它们可用于集中共享配置和应用程序,这些共享配置和应用程序由依赖的应用程序pdb使用。
PDB 快照旋转盘
从Oracle 18c开始,可以创建PDB的自动管理快照,也称为快照旋转盘(snapshot carousel)。
容器数据库CDB集中管理
从Oracle 18c开始,可以集中监视多个容器数据库。
Views
多租户选项的引入带来了额外的一层数据字典视图,允许查询的信息跨根容器和pdb。
在Oracle 12c中,一个额外的层被添加到视图层次结构中。
- CDB_:所有容器中的所有对象*(根和所有pdb)。
- DBA_:当前容器中的所有对象(根或PDB)。
- ALL_:当前容器(根或PDB)中当前用户可访问的对象,包括当前用户拥有的对象。
- USER_:当前容器(根或PDB)中当前用户拥有的对象。
备注:CDB_视图的输出依赖于访问它们的容器。当从根容器访问时,它们确实会显示来自所有容器的所有信息。当从PDB访问时,它们有效地充当容器内的DBA_视图。这一开始可能会让人有点困惑。
参考文档
https://oracle-base.com/articles/12c/multitenant-overview-container-database-cdb-12cr1
https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/intro-to-upgrading-oracle-database.html#GUID-FA024F34-A61A-4C4B-AA60-C123A9191A16
标签:容器,CDB,租户,数据库,--,Oracle,PDB From: https://blog.51cto.com/u_13482808/8407073