Multitenant CDB与PDB
Multitenant 是现代 Oracle 的基础架构之一,通过 CDB、PDB、Root、Seed 和服务隔离多个数据库。它改变了升级、补丁、备份、资源隔离和租户治理方式。
# 1. 学习目标与定位
| 维度 | 内容 |
|---|---|
| 难度层级 | 架构到运维 |
| 核心目标 | 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来 |
| 适合人群 | 开发人员关注连接到正确 PDB 和 Schema;运维人员关注 CDB/PDB 生命周期、资源、备份、克隆和补丁。 |
# 2. 核心概念总览
Multitenant CDB与PDB
├─ CDB
├─ PDB
├─ CDB Root
├─ PDB Seed
├─ Application Container
├─ PDB Clone
├─ PDB Relocate
├─ Resource Manager
└─ PDB Backup
这张图只用来定位本章范围。正文不会把每个词机械拆成固定问答,而是按 Oracle 的真实运行机制解释它们之间如何协作、在哪里影响开发、在哪里影响运维。
# 3. 底层原理详解
CDB 是容器数据库,包含 CDB Root、Seed 和多个 PDB。Root 保存公共元数据,Seed 用于快速创建新 PDB,PDB 承载应用数据和 Schema。
Multitenant 把多个数据库整合到一个实例和一套基础设施中,提升运维效率,但也引入资源隔离、权限边界、备份恢复粒度和连接治理问题。
应用连接必须指向具体 PDB 服务。连到 CDB$ROOT 执行业务对象操作通常是错误的。公共用户、本地用户、公共角色、本地角色的边界必须清楚。
# 4. 关键机制拆解
# 4.1. CDB、Root、Seed 与 PDB
CDB Root 保存公共数据字典和公共组件,PDB Seed 是只读模板,PDB 是应用实际运行的容器。每个 PDB 看起来像独立数据库,但共享实例资源。
开发人员要确认连接服务对应的 PDB。很多“表不存在”或“权限不足”问题,本质是连接到了错误容器。
# 4.2. 用户、权限与对象边界
Common User 可跨容器存在,Local User 只在某个 PDB 中存在。权限授予也有公共和本地区别。
权限设计要避免公共账号滥用。多租户场景下,错误的公共授权会放大影响范围。
# 4.3. 克隆、迁移和刷新
PDB Clone 可以快速复制环境,PDB Relocate 可以迁移 PDB,Application Container 适合多租户应用共享定义。
克隆不是简单复制文件。要考虑服务名、DB Link、目录对象、外部依赖、作业、账号口令和数据脱敏。
# 4.4. 资源管理与备份恢复
多个 PDB 共享 CPU、内存、IO 和后台进程。Resource Manager 可以限制不同 PDB 的资源使用。RMAN 支持 CDB 级和 PDB 级备份恢复。
PDB 级恢复很有价值,但前提是备份策略、归档链和恢复演练覆盖了这个粒度。
# 5. 功能模块细节补充
本节围绕概念图中的模块逐个补充底层细节,重点讲它们在 Oracle 运行链路中的位置和相互关系,而不是按固定角色模板拆分。
# 5.1. CDB
CDB 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.2. PDB
PDB 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.3. CDB Root
CDB Root 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.4. PDB Seed
PDB Seed 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.5. Application Container
Application Container 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.6. PDB Clone
PDB Clone 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.7. PDB Relocate
PDB Relocate 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.8. Resource Manager
Resource Manager 属于 CDB/PDB 多租户架构。它改变了对象所在容器、用户权限、资源隔离、备份恢复和补丁升级方式;任何应用连接都必须明确服务名和目标 PDB。
# 5.9. PDB Backup
PDB Backup 属于备份恢复或闪回链路。备份文件、控制文件、归档日志、恢复目录和闪回日志共同决定能恢复到哪里、多久恢复、是否能校验;备份成功不等于恢复能力达标。
# 6. 开发人员重点提醒
- 应用连接串必须使用 PDB 服务名。
- Schema 和 PDB 边界要写入配置和文档。
- 克隆环境要做脱敏和外部依赖隔离。
# 7. 运维人员重点提醒
- 监控每个 PDB 的空间、会话、资源和服务状态。
- 补丁升级前验证所有 PDB 组件状态。
- 定期演练 PDB 级恢复和克隆。
# 8. 典型问题与排查
- 连错容器:检查 show con_name、服务名和连接串。
- 某 PDB 拖慢全库:检查 Resource Manager 和 PDB 资源使用。
- PDB 打不开:检查插件兼容、组件状态和数据文件。
# 9. 实践建议与检查清单
- PDB 服务命名规范
- 公共/本地用户边界清晰
- PDB 资源计划配置
- PDB 级备份恢复演练
- 克隆脱敏流程完整
# 10. 阶段小结
本篇的学习重点不是记住术语,而是能把底层机制、业务语义和生产证据连起来。读完本篇后,应该能解释关键组件如何协作、常见问题为什么发生、开发侧如何避免制造风险、运维侧如何用指标和日志把问题定位到具体链路。