暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Oracle21c-多租户架构-CDB和PDB

原创 dba-lxb 2022-07-04
2605

Oracle21c-多租户架构-CDB和PDB

详见官方文档:
https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/CDBs-and-PDBs.html#GUID-5C339A60-2163-4ECE-B7A9-4D67D3D894FB
多租户架构使 Oracle 数据库能够充当多租户容器数据库 (CDB)。
从 Oracle Database 21c 开始,多租户容器数据库是唯一受支持的架构。在以前的版本中,Oracle 支持非容器数据库(非 CDB)。

关于 CDB 中的容器

容器是多租户容器数据库 (CDB)中模式、对象和相关结构的集合。在 CDB 中,每个容器都有唯一的 ID 和名称。
CDB包括零个、一个或多个客户创建的可插拔数据库 (PDB) 和应用程序容器。PDB是模式、模式对象和非模式对象的可移植集合,在 Oracle Net 客户端中显示为单独的数据库。应用程序容器是一种可选的、用户创建的 CDB 组件,它为一个或多个应用程序后端存储数据和元数据。一个 CDB 包含零个或多个应用程序容器。
更多应用容器请看:
https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/app-containers.html#GUID-B964031E-8ACE-4603-8F1E-DD173BE5BA01
图-CDB中的容器
image.png
每个 CDB 都有以下容器:

  • 恰好一个 CDB 根容器(也简称为 root)
    CDB 根是所有 PDB 所属的模式、模式对象和非模式对象的集合(请参阅“ CDB和 PDB ”)。根存储 Oracle 提供的元数据和普通用户。元数据的一个示例是 Oracle 提供的 PL/SQL 包的源代码。普通用户是每个容器中已知的数据库用户(请参阅“普通用户帐户”)。根容器名为CDB$ROOT.

  • 正好一个系统容器
    系统容器包括根 CDB 和 CDB 中的所有 PDB 。因此,系统容器是 CDB 本身的逻辑容器。

  • 零个或多个应用程序容器
    一个应用程序容器只包含一个应用程序根目录,以及插入该根目录的 PDB。系统容器包含 CDB 根和 CDB 中的所有PDB,而应用程序容器仅包含插入到应用程序根中的 PDB。应用程序根属于 CDB 根,不属于其他容器。

  • 零个或多个用户创建的 PDB
    PDB 包含一组特定功能所需的数据和代码(请参阅“ PDB ”)。例如,PDB 可以支持特定的应用程序,例如人力资源或销售应用程序。创建 CDB 时不存在任何 PDB。您可以根据业务需求添加 PDB。

    一个 PDB 恰好属于零个或一个应用程序容器。如果一个 PDB 属于一个应用程序容器,那么它就是一个应用程序 PDB。例如,cust1_pdb应用cust2_pdb程序 PDB 可能属于saas_sales_ac应用程序容器,在这种情况下,它们不属于其他应用程序容器。应用程序种子是一个可选的应用程序 PDB,它充当用户创建的 PDB 模板,使您能够快速创建新的应用程序 PDB。

  • 正好一个种子 PDB
    种子 PDB 是系统提供的模板,CDB 可以使用它来创建新的 PDB。种子 PDB 被命名为PDB$SEED. 您不能在 中添加或修改对象PDB$SEED。
    没有应用程序容器的 CDB
    此示例显示了一个包含五个容器的简单 CDB:系统容器(整个 CDB)、CDB 根、PDB 种子 ( PDB$SEED) 和两个 PDB。每个 PDB 都有自己的专用应用程序。不同的 PDB 管理员管理每个 PDB。一个共同的用户存在于一个具有单一身份的 CDB 中。在此示例中,普通用户SYS可以管理根和每个 PDB。在物理级别,此 CDB 由一个或多个数据库实例管理,并包含一组用于每个 PDB 和 CDB 本身的数据文件。
    image.png

带有应用程序容器的 CDB

在此示例中,CDB 包含一个名为saas_sales_ac. 在应用程序容器内,应用程序 PDBcust1_pdb支持一个客户的应用程序,应用程序 PDBcust2_pdb支持不同客户的应用程序。CDB 还包含一个名为 的 PDB hrpdb,它支持 HR 应用程序,但不属于应用程序容器。
image.png
在此示例中,多个 DBA 管理 CDB 环境:
CDB 管理员管理 CDB 本身。
应用程序容器管理员管理saas_sales_ac容器,包括应用程序安装和升级。
应用程序 PDB 管理员管理saas_sales_ac容器中的两个 PDB:cust1_pdb和cust2_pdb.
PDB 管理员管理hrpdb.
CDB 根和系统容器
CDB 根,也简称为根,是所有 PDB 所属的模式、模式对象和非模式对象的集合。

每个 CDB 都有一个且只有一个名为CDB$ROOT. 根存储管理 PDB 所需的系统元数据。所有 PDB 都属于根。系统容器是 CDB 根和属于该根的所有 PDB 。

CDB 根不存储用户数据。Oracle 建议您不要将公共对象添加到根目录或修改根目录中的 Oracle 提供的模式。但是,您可以为数据库管理创建通用用户和角色。具有必要权限的普通用户可以在容器之间切换。

Oracle 推荐使用 AL32UTF8 作为根字符集。具有不同字符集的 PDB 可以驻留在同一个 CDB 中,而无需进行字符集转换。
CDB 中的所有容器:
以下查询由连接到 CDB 根的管理用户发出,列出了 CDB 中的所有容器(包括种子和 CDB 根),按CON_ID.

COL NAME FORMAT A15 SELECT NAME, CON_ID, DBID, CON_UID, GUID FROM V$CONTAINERS ORDER BY CON_ID; NAME CON_ID DBID CON_UID GUID ------------- ------ ---------- ---------- -------------------------------- CDB$ROOT 1 1895287725 1 2003321EDD4F60D6E0534E40E40A41C5 PDB$SEED 2 2795386505 2795386505 200AC90679F07B55E05396C0E40A23FE SAAS_SALES_AC 3 1239646423 1239646423 200B4CE0A8DC1D24E05396C0E40AF8EE SALESPDB 4 3692549634 3692549634 200B4928319C1BCCE05396C0E40A2432 HRPDB 5 3784483090 3784483090 200B4928319D1BCCE05396C0E40A2432
复制
最后修改时间:2022-07-04 10:19:37
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论