oracle 12c release 1(12.1)引入了多租户选项。这篇文章提供一个基础的多租户概述,带有指向有关该功能的更详细文章的链接。

  • 概述
  • Oracle管理文件(OMF)和多租户
  • 创建可插拔数据库(PDBs)
  • 卸载和装载可插拔数据库(PDBs)
  • 重定位可插拔数据库(PDB)
  • 可刷新的可插拔数据库(PDB)
  • 可刷新的可插拔数据库(PDB)切换[Switchover]
  • 可插拔代理数据库(PDB)[proxy pdb]
  • 应用容器 [application container]
  • 可插拔数据库(PDB)快照转盘 [Snapshot Carousel]
  • 容器数据库(CDB)舰队管理[Fleet Management]
  • 视图
  • 多租户文档
    • 12.1.0.1之后
    • 12.1.0.2之后
    • 12.2.0.1之后
    • 18c之后
    • 19c之后
    • 21c之后
    • 其他各种
  • 非CDB(Non-CDB)架构不再推荐
  • 非CDB(Non-CDB)架构不再支持

概述

多租户选项是Oracle数据库历史中一个巨大的架构性变化。这个选项引入了容器数据库(CDB)和可插拔数据库(PDB)的概念。

  • 容器数据库 (CDB) : 表面上,他与传统的Oracle数据库很相似,因为他包括了大部分你熟悉的工作组件(控制文件,数据文件,undo文件,临时文件,redo日志等)。它包含的这些数据字典对象属于根容器,这些同样对所有PDB可见。
  • 可插拔 (PDB) : 由于CDB包括了大部分的工作组件,PDB只需要包括它专有的信息即可。他不需要考虑控制文件,redo日志或者undo等。他只需要整合他自己的数据文件、临时文件来使用它自己的对象。 这个自己的数据字典只包括这个PDB独有的信息。从12.2开始,PDB可以也应该拥有自己的UNDO表空间。

数据字典在根容器中的公共对象和PDB数据字典中的PDB特定对象之间的分离非常重要,因为这种分离赋予了多租户选项灵活性。从PDB的角度来看,数据字典是根和PDB数据字典的结合,因此在内部,PDB感觉非常像一个普通的Oracle数据库。例如,PDB中的DBA_%和ALL_%视图看起来与任何非CDB数据库相同。

Oracle管理文件(OMF)和多租户

Oracle建议在使用多租户体系结构时使用Oracle托管文件(OMF),因为它简化了许多功能。对于某些功能,如Oracle 12.2中的应用程序容器功能,似乎必须使用OMF。

创建可插拔数据库(PDBs)

由于大部分工作组件已经存在于根容器中,因此创建新的PDB是一项相对快速而简单的任务。当创建一个全新的PDP时,PDB是作为种子PDB的副本创建的,因此只需要复制文件所需的时间。

您可以克隆现有的PDB,而不是从种子创建新的PDB。

也可以在远程CDB中创建克隆。

关于创建和克隆PDB的更详细的描述可以在这里找到here

卸载和装载可插拔数据库(PDBs)

多租户选项最强大的功能之一是能够从CDB中拔出PDB并将其插回另一个CDB。

这不仅可以方便地移动数据库,而且还提供了一种修补和升级到未来版本的替代方法。使用plugin/plugin执行补丁的示例可以在这里找到 here。这里 here介绍了对plugin/plugin机制的一般性讨论。

将非CDB数据库转换为可插拔数据库需要获得非CDB数据库的描述,并使用该描述将其作为新的PDB插入CDB。这里 here.介绍了这种方法。

 重定位可插拔数据库(PDB)

从Oracle 12.2开始,可以重新定位PDB,将其从一个CDB移动到另一个CDB。这比传统的拔插头/插件要简单得多。

 您可以在此处阅读有关重新定位PDB的信息here

 可刷新的可插拔数据库(PDB)切换[Switchover]

从Oracle 12.2开始,可以从源PDB刷新克隆的PDB,前提是它只以只读模式打开过。

  

您可以在此处阅读有关刷新PDB的信息here

 可插拔代理数据库(PDB)[proxy pdb]

从Oracle12.2开始,可以创建代理PDB,它是一个将SQL发送到要处理的远程PDB的骨架PDB。这允许您拥有远程数据库的本地终点。

您可以在此处阅读有关代理PDB的信息here

 应用容器 [application container]

Oracle12.2引入了应用应用容器的概念,其作用类似于迷你的根容器。它们可以用于集中共享配置和应用程序,这些配置和应用由其依赖的应用程序PDB使用。

  

您可以在此处阅读有应用容器的信息here

 可插拔数据库(PDB)快照转盘 [Snapshot Carousel]

从Oracle 18c开始,可以创建PDB的自动管理快照,也称为快照转盘。

  

您可以在此处阅读有快照转盘的信息here

 容器数据库(CDB)舰队管理[Fleet Management]

从Oracle 18c开始,可以将多个容器数据库作为一个组集中监控。

  

您可以在这里阅读有关CDB舰队管理的信息 here

视图

多租户选项的引入带来了一层额外的数据字典视图,允许跨根容器和可插拔数据库(PDB)进行报告。暂时忽略现在的版本,以前的版本具有以下层次结构。

DBA_ : All objects in the database.
|
--ALL_ : Objects accessible by the current user, including those owned by the current user.
  |
  --USER_ : Objects owned by the current user.

对于Oracle12c,将向层次结构中添加一个额外的层。

CDB_ : All objects in all containers * (root and all PDBs).
|
--DBA_ : All objects in the current container (root or PDB).
  |
  --ALL_ : Objects accessible by the current user in the current container (root or PDB), including those owned by the current user.
    |
    --USER_ : Objects owned by the current user in the current container (root or PDB).

视图描述信息在参考手册Reference Manual

*CDB_视图的输出取决于访问它们的容器。当从根容器访问时,它们确实显示了所有容器中的所有信息。当从PDB访问时,它们的行为实际上就像容器中的DBA_视图。一开始这可能有点令人困惑。

多租户文档

在12.1中,每个CDB可以免费使用一个PDB,也称为Lone-PDB。如果你想要一个以上的PDB(2-252),你必须购买企业版之上的多租户选项。

12.1.0.1之后

12.1.0.2之后

12.2.0.1之后

从12.2开始,我们可以在一个CDB内拥有一个代理PDB、应用程序根容器和一个用户定义的PDB(常规或应用程序PDB),而无需支付多租户选项的费用。请注意,我们仍然局限于单个用户定义的PDB。多租户选项仍然允许您在常规套件上使用2-252个PDB,或在Oracle工程系统或Oracle数据库云服务上使用2-4096个PDB。

18c之后

Oracle 18c XE(Express Edition)最多可免费提供三个用户定义的PDB。所有其他版本具有与12.2相同的关于多变量选项的规则。

19c之后

从19c开始,您可以在CDB中拥有3个用户定义的PDB,而无需许可多租户选项,如本文文档中所述here

21c之后

其他各种

非CDB(Non-CDB)架构不再推荐

随着Oracle数据库(12.1.0.2)的发布,非CDB体系结构已被弃用。一些12c功能目前不适用于多租户体系结构(请参阅此处),因此根据您需要的功能,您可能仍然需要旧的12c之前的样式实例。

请记住,使用单个PDB不需要多租户选项,因此可以免费使用单独的PDB设置,让您熟悉多租户架构。

从12.2开始,我们可以在一个CDB内拥有一个代理PDB、应用程序根容器和一个用户定义的PDB(常规或应用程序PDB),而无需支付多租户选项的费用。请注意,我们仍然局限于单个用户定义的PDB。

非CDB(Non-CDB)架构不再支持

在2019年Oracle OpenWorld上,宣布非CDB架构将从Oracle 20c开始不再支持。Oracle21c是第一个不支持非CDB体系结构的预发布版本。

有关更多信息,请参阅:

翻译员碎碎念:很好的文章,持续施工中

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐