Oracle 多租户架构

2025 年 1 月 23 日 | 阅读 6 分钟

什么是 Oracle Multitenant 架构?

它恰好类似于一个篮子。容器数据库中的用户和应用程序数据不在其中。容器数据库中包含多个独立的 PDB。

一个 PDB 中的参与者无法访问另一个 PDB 中的参与者,除非,正如我们稍后将讨论的,它们之间存在数据库链接。因此,“CDB 管理员”指的是管理容器数据库的 DBA。PDB 管理员是指负责 PDB 的 DBA。一个 DBA 也可以同时担任这两个角色。

Oracle Multitenant Architecture

非容器数据库(11g)与容器数据库(12c)的区别是什么?

在 12c 之前的 11g 版本中有一个 Oracle 数据库。11g 版本中的每个数据库都与其对应的服务器相关联。在下面的场景中,数据库 1 和数据库 2 分别连接到服务器 1 和服务器 2。由于这里有许多服务器,管理这些数据库需要大量资源。现在,12c 容器数据库中包含 PDB,从而节省了服务器。一个应用程序连接到每个 PDB。

Oracle Multitenant Architecture

所有容器数据库都使用以下过程

  • 一个 CDB 根容器,指定为 CDB$ROOT:我们只有一个根数据库。容器数据库中的所有 PDB 都与 PDB 共享相同的数据文件、元数据和公共用户。
  • PDB$SEED,种子 PDB(模板):默认情况下,Oracle 会创建一个种子 PDB,它可以被克隆以创建额外的 PDB。新数据库使用此设置作为指导模板创建。
  • 一个或多个用户创建的 PDB:上图显示了两个 PDB(PDB1 和 PDB2),它们是从 PDB$SEED 数据库模板创建的。

注意:自 12c R2 起,我们有了应用容器的新概念。这是一个可选容器。根 CDB 包含一个小型 CDB,称为应用容器数据库。

Oracle Multitenant 架构是 Oracle 数据库 12c 的一项功能,它允许管理员在单个 Oracle 数据库实例或容器数据库 (CDB) 中管理多个数据库。这种架构提高了数据库整合的效率,更好地利用了可用资源,并简化了管理。

关键组件

容器数据库 (CDB)

  • 一个 Oracle 数据库,包含零个、一个或多个 PDB。
  • 它包含种子数据库(PDB$SEED),用作创建新 PDB 的模板,以及根容器(也称为 CDB$ROOT),其中包含 Oracle 系统元数据。

可插入数据库 (PDB)

  • 一套可传输的模式、模式对象和非模式对象,程序使用它们来模拟非 CDB 的 Oracle 数据库。
  • 虽然每个 PDB 独立运行,但它们共享 CDB 的实例内存和后台进程。

架构概述

  • CDB$ROOT:此文件夹包含所有 PDB 共享的公共对象以及 Oracle 系统的元数据。它不包含用户数据。
  • PDB$SEED:用于创建新 PDB 的 PDB 模板。它对于 PDB 的创建至关重要,但不能用于常规使用。
  • 用户定义的 PDB:这些包含用户定义的对象和应用程序数据。尽管彼此隔离,但每个 PDB 都在 CDB 环境中运行。

当然,让我们更详细地研究 Oracle Multitenant 架构,涵盖常见的用例、管理方面、性能考虑因素等等。

规范

1. PDB 生命周期管理

  • 创建:PDB 可以从现有 PDB 克隆、从另一个 CDB 插入或从种子(PDB$SEED)生成。
  • 克隆:支持本地克隆和远程克隆。远程克隆是指在一个 CDB 中从另一个 CDB 的 PDB 创建 PDB,而本地克隆则在同一个 CDB 中进行。
  • 插入/拔出:PDB 可以插入和从不同的 CDB 中拔出。这使得在不同环境之间移动和迁移数据库更加容易。

2. 资源管理

  • 资源管理器:资源管理器允许您创建资源计划,这些计划会调节 PDB 之间的 CPU、I/O 和并行执行使用的资源。这确保了一个 PDB 不会垄断系统资源。
  • 内存管理:可以设置自动内存管理(AMM)以在 PDB 之间动态分配内存资源。

3. 安全性

  • PDB 隔离:为了确保安全边界得到维护,每个 PDB 都与其他 PDB 隔离。
  • 公共和本地用户:在多租户系统中,用户可以分为本地用户(在特定 PDB 中创建)或公共用户(在 CDB$ROOT 中创建并在所有 PDB 中可用)。

4. 恢复和备份

  • PDB 级备份:可以使用 RMAN 备份单个 PDB。这允许进行操作性恢复和备份计划的灵活性。
  • 闪回:PDB 支持闪回操作,从而可以进行时间点恢复以撤销更改。

管理

1. 管理 PDB

  • 打开和关闭 PDB:CDB 中的 PDB 可以独立于彼此打开或关闭。
  • 状态管理:CDB 启动时,PDB 可以设置为自动打开。

2. 升级和补丁

  • 补丁 CDB:对 CDB 应用补丁有助于维护,并支持所有 PDB。
  • PDB 迁移:为了负载均衡或其他管理原因,PDB 可以跨不同的 CDB 移动。

3. 监控

  • AWR 和 ADDM:要跟踪性能并识别问题,可以使用自动工作负载存储库 (AWR) 和自动数据库诊断监视器 (ADDM) 为每个 PDB 生成报告。
  • 企业管理器:Oracle Enterprise Manager Cloud Control 提供了一个集中式界面,用于监视和管理整个多租户环境。

性能考虑

1. 资源分配

为了确保高优先级 PDB 获得所需的资源,适当的资源管理至关重要。

使用 Oracle Resource Manager 来有效地配置 CPU、I/O 和其他资源。

2. 隔离

尽管 PDB 拥有相同的 CDB,但需要仔细规划以确保一个 PDB 的性能不会对其他 PDB 的性能产生不利影响。

3. 可扩展性

尽管多租户架构的扩展性很好,但有效管理的 PDB 的总数取决于底层硬件和资源配置。

常见用例

1. 数据库即服务 (DBaaS)

当多个租户(客户或部门)需要独立的数据库但又受益于共享基础设施时,Oracle Multitenant 是理想的 DBaaS 选择。

2. 测试和开发环境

PDB 的快速预配和克隆使得创建与生产环境非常相似的开发和测试环境变得简单。

3. aaS 项目

可以为每个客户分配一个 PDB,从而保证数据隔离并总体上简化管理。

4. 遗留数据库整合

将多个遗留数据库整合到一个 CDB 中可以大大减少与其相关的管理负担和硬件成本。

Oracle Multitenant Architecture

Oracle Multitenant 架构的优势

  • 降低成本:它减少了服务器的数量,并在单台服务器上管理大量数据库。
  • 节约资源:所有这些 PDB 可以由一个资源(DBA)管理。
  • 易于备份:不必为每个 PDB 创建单独的备份。只能备份包含所有 PDB 备份的容器数据库。
  • 易于克隆:由于克隆 PDB 所需时间较少,因此非常简单。
  • 区分管理职责:它区分了 PDB 管理员和 CDB 管理员的职责。

结论

总之,Oracle Multitenant 架构为现代数据库管理提供了一个可扩展、高效且安全的基础。它使组织能够利用更高的灵活性、降低的成本和简化的管理。这种现代方法满足了当今全球驱动的事实不断增长的需求,使其成为任何希望优化其数据库设计的企业的必备工具。

Oracle Multitenant 架构提供了一种高效且适应性强的架构,用于在单个实例中管理多个数据库。这种架构使企业能够在实现显著成本节省、提高资源利用率和简化管理职责的同时,保持各个数据库的机密性和隔离性。