开始使用 Amazon RDS for Oracle 的多租户功能

by Vishal Patil Manash Kalita 和 Arnab Saha 于 2024年2月23日发布于 高级 (300) Amazon RDS RDS for Oracle 技术如何做永久链接评论

文章要点

组织能够通过 Amazon RDS for Oracle 的多租户功能,集中管理多个 Oracle 数据库。Oracle 多租户架构提供了更高的资源利用率,同时简化了数据库管理。用户可在 Amazon RDS 控制台和 AWS CLI 中创建、删除和管理租户数据库。从单租户实例转为多租户实例的过程具有无停机特点。

许多组织在多台物理服务器或虚拟机上运行大量 Oracle 数据库。他们在这些数据库的操作和管理上投入了大量资源,导致在基础设施、管理和许可上产生了不少开支。然而,由于硬件技术进步以及数据库引擎的增强,许多物理服务器和虚拟机现在都未能得到有效利用。

通过以下一种或多种方式,可以实现资源的整合与利用:

虚拟化,每个虚拟机运行一个数据库每个物理服务器或虚拟机运行多个数据库在单个数据库中拥有多个支持不同应用程序的模式使用 Oracle Multitenant

在这些选项中,Oracle Multitenant 不仅提供整合与可管理的好处,还能在应用程序之间提供更好的隔离。 Oracle Multitenant 架构 改变了数据库的结构,使其可以作为容器数据库 (CDB) ,并包含一个或多个可插拔数据库 (PDB)。PDB 是一组可移植的模式、模式对象和非模式对象集合,连接到容器并在 Oracle Net 客户端中作为一个独立的数据库出现。Oracle Multitenant 通过提供整合来应对资源利用方面的挑战,能帮助在不改变现有模式和应用程序的情况下实现资源整合。它还使得管理多 PDB 成为一个 CDB 的过程变得更加简便。每个容器数据库 (CDB) 最多可以有 3 个用户创建的可插拔数据库 (PDB) 而无需额外的多租户许可。 根据 Oracle 的测试,Oracle Multitenant 能够显著提高整合密度,相比在专用虚拟机上运行的单实例数据库效果更佳。

在本文中,我们将讨论 Amazon RDS for Oracle 中的 Oracle Multitenant 架构,及其如何支持 在 CDB 中创建多个 PDB。在 Amazon RDS for Oracle 中,这些 PDB 被称为“租户数据库”。新功能允许您在单个 RDS for Oracle 数据库 (CDB) 实例中运行多个逻辑上隔离的 PDB。

请注意,Amazon RDS 对 Oracle Multitenant 的功能称为“多租户”,而非“multitenant”,因为这是多个其他 RDS 数据库引擎提供的功能,而不单限于 Oracle 数据库引擎。术语“Oracle Multitenant”仅指 Oracle 数据库架构,适用于本地部署和 Amazon RDS for Oracle 部署。

解决方案概述

使用 Oracle Multitenant 的自管 Oracle 环境的组织,无论是在本地还是在 Amazon Elastic Compute Cloud (Amazon EC2) 上,都可以通过具有多租户功能的 Amazon RDS for Oracle 完全托管的数据库服务迁移这些数据库。

此外,Amazon RDS for Oracle MultiTenant 还可以帮助希望通过允许在一个 CDB 中整合多个实例来进行成本优化的客户。多个租户数据库共享单个 RDS for Oracle 实例可以减少计算成本,并通过使用单个实例来运行多个数据库,提高现有计算资源的效率和利用率。减少实例数量还简化了数据库的管理和维护,因为您需要监控、打补丁和维护的实例数量减少。

每个租户数据库将拥有自己的主要用户、其他数据库用户、表空间等。Amazon RDS for Oracle 继续提供管理备份和恢复的功能,包括针对整个实例的时间点恢复 (PITR),这包括 CDB 和租户数据库。您可以通过新的 Amazon RDS 租户数据库 API,在 RDS for Oracle 多租户实例中添加、删除或修改 PDB。Amazon RDS for Oracle 支持将多租户数据库作为一个单独的参数组进行简化管理,并且单个选项组将应用于该实例的租户数据库。您可以将每个租户视为一个独立的逻辑数据库,拥有不同的主要用户、密码、用户、模式和表空间。

开始使用 Amazon RDS for Oracle 的多租户功能 数据库博客

从 Oracle Database 21c 开始,多租户容器数据库是唯一受支持的架构。值得注意的是,Oracle Database 19c 标志着 Oracle 支持的最后一个长期版本,允许创建非 CDB。当 Oracle 停止对 Oracle Database 19c 的支持时,在 Amazon RDS for Oracle 中创建非 CDB 的选项将变得不可用。

Amazon RDS for Oracle 中的 Oracle Multitenant 架构的新多租户配置是现有单租户配置的一种替代方案。顾名思义,Amazon RDS for Oracle 的单租户配置每个 CDB 只有一个 PDB。Amazon RDS for Oracle 已经推出了 Oracle Multitenant 架构,具有多租户能力,适用于标准版 2 和企业版。标准版 2 自然限制在最多创建 3 个用户自建 PDB,而无法添加更多。Amazon RDS for Oracle 在企业版中提供了技术能力,可以容纳超过 3 个 PDB 截至本文撰写时为 30 个 PDB,因此您应该检查自己的 Oracle 权益和合同,确定是否可以创建超过 3 个 PDB。

以下是 Amazon RDS for Oracle 多租户的一些关键优势总结:

优势描述增加资源利用率通过合理配置和整合,提高硬件资源的利用有可能降低计算成本多租户设计有助于在资源上进行有效的成本管理简化数据库运营和维护减少需要管理的实例规模和复杂性使用 AWS 管理控制台或 AWS CLI 创建、删除、修改 PDB 和租户数据库方便快捷的操作界面,降低工作复杂度将 RDS for Oracle CDB 实例从单一租户转为多租户配置支持灵活的数据库架构调整使用 Amazon RDS 自动化管理 CDB 的备份与恢复高效的自动化功能保证数据库安全与可用性将单个参数组或选项组应用于 RDS for Oracle DB 实例中的 PDB统一的管理减少了操作复杂度以不同的主要用户、密码、用户、模式和表空间分别管理每个 PDB灵活的配置满足多种业务需求

使用控制台创建 RDS for Oracle 多租户数据库实例

要使用控制台创建 RDS for Oracle 多租户数据库实例,请完成以下步骤:

在 Amazon RDS 控制台中,选择希望创建 CDB 实例的 AWS 区域。在导航面板中,选择 Databases。选择 Create database。

对于 选择数据库创建方法 ,选择 Standard create。

对于 引擎选项 ,选择 Oracle。

对于 数据库管理类型 ,选择 Amazon RDS。

安易免费加速器

对于 架构设置 ,选择 Oracle multitenant architecture。

对于 架构配置 ,选择 Multitenant configuration。

对于 版本 ,您可以选择企业版或标准版二。如果选择标准版二,您将受到最多 3 个 PDB 的限制。

如果选择 Oracle 企业版,请将 许可 设为自带许可证 (BYOL);如果选择 Oracle 标准版二,您可以选择 BYOL 或包含许可 (LI)。

对于 模板 ,选择 Production 或 Dev/Test。生产模板会创建多可用区 (MultiAZ) 备用实例。

对于 数据库实例标识符 ,为您的数据库实例输入一个名称。此名称在当前区域内应在所有数据库实例中唯一。

租户数据库设置 部分允许您为多租户数据库的初始 PDB 指定设置:

对于 租户数据库名称 ,输入您初始 PDB 的名称。确保此名称与默认名称 RDSCDB 不同。对于 租户数据库 master 用户名 ,输入您 PDB 的本地用户名称,这是 PDB 的主要用户。输入或选择 租户数据库 master 密码 的自动生成密码。对于 租户数据库字符集 ,选择 PDB 字符集。此值可以与 CDB 字符集不同。

请注意,您不能在 CDB 创建过程中创建多个租户数据库。只能向已存在的 CDB 添加 PDB。

选择适当的设置,配置 实例配置、存储、可用性与耐用性、连接性 和 监控 部分。在 附加配置 部分,您可以更改 DB 参数组或选项组、备份、加密、日志、维护和删除保护的设置。 您将看到 系统 ID (SID) 为 RDSCDB,这是 CDB 名称。此名称不可更改。其他设置可以根据需要进行更改,比如启用自动备份、启用跨区域自动备份、启用自动小版本升级等。

选择 创建数据库。

几分钟后,RDS for Oracle 实例将可用。

使用 AWS CLI 创建 RDS for Oracle 多租户数据库实例

要使用 AWS CLI 创建 RDS for Oracle 多租户数据库实例,请使用以下命令:

bashaws rds createdbinstance region useast1 engine oracleeecdb dbinstanceidentifier mycdbinst multitenant dbname mypdb masterusername mypdbadmin masteruserpassword masteruserpassword allocatedstorage 250 dbinstanceclass dbt3large backupretentionperiod 3

使用控制台向 RDS for Oracle 多租户实例添加租户

要通过控制台向您的实例添加租户,请完成以下步骤:

在 Amazon RDS 控制台中,选择导航面板中的 Databases。选择要向其添加租户数据库的 RDS for Oracle 实例。在 操作 菜单中,选择 添加租户数据库 新建。 在 实例设置 中,您将看到要添加租户的 DB 实例标识符。

对于 租户数据库名称 ,输入租户数据库名称,也就是 PDB 名称。这个名字在该数据库实例的所有租户中必须唯一。提供租户数据库主要用户名和密码。这个用户是创建租户时的本地用户。每个租户数据库都有自己主要的用户。选择用于该租户的数据库字符集。选择 添加租户。

几分钟后,PDB 将被添加。

使用 AWS CLI 向 RDS for Oracle 多租户实例添加租户

以下示例在名为 database1 的 RDS for Oracle CDB 实例中创建名为 MYPDB2 的租户数据库:

bashaws rds createtenantdatabase region uswest2 dbinstanceidentifier database1 tenantdbname MYPDB2 masterusername admin masteruserpassword mypdb2pwd

连接到租户数据库

您无法连接到 CDB 数据库的根容器,因为 Amazon RDS for Oracle 多租户不允许创建公共用户。您可以使用相应的主要用户或该租户数据库中创建的其他本地用户连接到各个 PDB。

要连接到您数据库1 中名为 MYPDB 的 PDB,请在 连接性与安全性 标签上找到 DB 实例的端点。同时注意监听端口。

您可以使用此端点、端口和租户数据库名称连接到相应的租户数据库。以下屏幕截图展示了 SQL Developer 的创建连接向导。它将使用 admin (主要) 用户连接到 MYP