Part I Multitenant Architecture
多租户体系结构允许 Oracle 数据库充当多租户容器数据库 (CDB) 。
1 多租户体系结构介绍
熟悉 Oracle Multitenant 选项。
1.1 20C 新特性
以下是该版本的新特性。
注意 : 多租户容器数据库是 Oracle 数据库 20c 中唯一支持的架构。 在修订文档时,遗留术语可能会保留下来。 在大多数情况下, “ 数据库 ” 和 “ 非 CDB” 指的是 CDB 或 PDB ,具体取决于上下文。 在某些上下文中,例如升级, “ 非 cdb” 指的是来自以前版本的非 cdb 。
l 采用非 cdb 作为 PDB 使用回放升级
在 Oracle 数据库 20c CDB 中采用以前版本中的非 CDB 作为 PDB 时,当 PDB 正常打开时,升级将自动发生。 回放升级功能自动捕获必要的创建或替换语句,仅对更改的对象重播语句,并转换数据字典。 回放机制与应用程序同步中使用的机制相同。
参见 Oracle 数据库升级指南,了解如何使用回放升级采用非 cdb 作为 PDB 。
l 在 PDB 打开时重播升级
当 PDB 和 CDB 根之间发生版本不匹配时,打开 PDB 会自动升级它。 PDB Open optimization 上的重播升级是默认的,它通过重新执行存储在捕获表中的语句来避免手动的错误纠正。 该机制与应用程序同步中使用的机制相同。 Oracle 数据库 20c 在以下场景中使用 PDB Open 上的重播升级 :
l 您可以插入在以前版本中从 CDB 拔下的 PDB 。 当 PDB 打开时,数据库自动执行重播升级。
l 以前版本的 CDB 升级到了 Oracle 数据库 20c ,但是 CDB 中的 PDB 没有升级。 如果您在没有打开升级选项的情况下打开 PDB ,那么 CDB 将自动执行 PDB 的重播升级。
参见 “ 打开 PDB 时的兼容性检查 ” 和 “ 插入\ 未插入的 PDB” 。
l 与 Oracle 数据库的名称空间集成
DbNest 为 PDBs 提供操作系统资源隔离和管理、文件系统隔离和安全计算。 当启用 DbNest 时,在 nest( 一种隔离的、分层的容器 ) 内部会发生数据库实例的供应。 数据库实例系统资源与其他实例隔离。 文件和目录只能由配置它们的 CDB 或 PDB 访问。
参见 “ 使用 DbNest 保护和隔离资源 ” 。
l Oracle 云中的透明应用程序连续性
在计划任务的维护期间,当 window 结束时,数据库将会结束 session 。 在这种情况下,数据库调用应用程序连续性并自动结束 session 。
参见 “ 服务器会话在重新定位或停止 PDBs 时耗尽 ” 。
l CPU_MIN_COUNT 初始化参数增强
CPU_MIN_COUNT 表示 PDB 或 CDB 所需的最小 CPU 线程数。 CPU 资源管理器使用 PDB 级的 CPU_MIN_COUNT 值来设置资源计划中的 PDB 共享。 对于每个 PDB, CPU 资源管理器确保对 CPU 的公平访问,保证最小的 CPU ,并强制执行最大的 CPU 。
请参阅 “ 用于 PDBs 的与 cpu 相关的初始化参数 ” 。
l JOB_QUEUE_PROCESSES 初始化参数增强
跨越所有容器的 JOB_QUEUE_PROCESSES 的默认值已经从 4000 更改为一个自动值,该值取决于会话和 CPU 线程的数量。
参见 “CDB 中的 DBMS_SCHEDULER 调用 ” 。
l MAX_IDLE_BLOCKER_TIME 初始化参数增强
MAX_IDLE_BLOCKER_TIME 设置持有所需资源的会话在终止之前空闲的分钟数。
请参阅 “ 与会话相关的 PDBs 初始化参数 ” 。
l 应用程序同步的扩展语法
The ALTER PLUGGABLE DATABASE APPLICATION ... SYNC 语句接受多个应用程序名称。 例如,在应用程序 PDB 中发布的单个语句可以同步 apexapp 和 ordsapp ,或者同步 ordsapp 之外的所有应用程序。
当应用程序彼此依赖时,为了保证函数的正确性,需要在一条语句中对它们进行同步。 假设您将 apexapp 从 1.0 升级到 2.0 ,将 ordsapp 从 1.0 升级到 2.0 ,然后将 apexapp 升级到 3.0 。 语句改变可插入的数据库应用程序 apexapp, ordsapp 同步按顺序升级,将 apexapp 升级到 2.0,ordsapp 升级到 2.0 ,然后 apexapp 升级到 3.0 。 在单独的语句中同步 apexapp 和 ordsapp 并不保留升级顺序。
当应用程序相互依赖时,需要在一条语句中对它们进行同步,参见 “ 应用程序同步 ” 和 “ 在应用程序 PDB 中同步应用程序 ” 。