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

PDB(Pluggable Database,可插拔数据库)

恩恩霸 2025-11-01
146

PDB(Pluggable Database,可插拔数据库)是 Oracle 12c 开始引入的一种数据库架构创新,它实现了“一个容器,多个数据库”的多租户架构(Multitenant Architecture)。PDB 作为可插拔的数据库单元,既可以独立运行,又可以像“插拔U盘”一样快速插入或拔出容器数据库(CDB),极大地提升了数据库的灵活性、可维护性和资源利用率。以下从 PDB 的定义、架构、特点、创建、管理、使用场景、优势与限制等方面进行系统介绍。

---

### 一、PDB 的定义与背景

在 Oracle 12c 之前,每个数据库实例只能管理一个数据库(即非 CDB 模式),这在部署、管理、升级、迁移等方面存在大量重复劳动。为了解决这一问题,Oracle 引入了多租户架构(Multitenant Architecture),将数据库分为两个层级:

- **CDB(Container Database)**:容器数据库,负责管理整个实例的资源、后台进程、控制文件、重做日志等。
- **PDB(Pluggable Database)**:可插拔数据库,包含用户数据、表空间、用户账户、权限等逻辑结构,可像插件一样插入或拔出 CDB。

一个 CDB 可以包含最多 4096 个 PDB,每个 PDB 在逻辑上是一个独立的数据库,用户无法感知其与其他 PDB 的共存。

---

### 二、PDB 的架构组成

#### 1. CDB 根容器(CDB$ROOT)
- 存储系统元数据、公共用户、角色、权限等。
- 所有 PDB 共享其后台进程和内存结构。

#### 2. PDB
- 每个 PDB 有自己的数据文件、表空间、用户、权限、应用数据等。
- 逻辑上独立,物理上共享 CDB 的资源。

#### 3. 种子 PDB(PDB$SEED)
- 是创建新 PDB 的模板,只读状态,不能修改。
- 用于快速克隆新的 PDB。

---

### 三、PDB 的核心特点

| 特性 | 描述 |
|------|------|
| **逻辑隔离** | 每个 PDB 拥有独立的用户、表空间、数据字典,互不干扰。 |
| **资源共享** | 共享 CDB 的内存、进程、控制文件、重做日志等资源。 |
| **快速克隆** | 支持从种子 PDB 或现有 PDB 快速克隆新 PDB。 |
| **插拔迁移** | PDB 可拔出为 XML 描述文件 + 数据文件,插入到另一个 CDB 中。 |
| **独立备份** | 可对单个 PDB 进行备份与恢复,不影响其他 PDB。 |
| **补丁升级** | 只需升级 CDB,所有 PDB 自动继承补丁,简化运维。 |

---

### 四、PDB 的创建方式

#### 1. 从种子 PDB 创建
```sql
CREATE PLUGGABLE DATABASE pdb1
ADMIN USER pdbadmin IDENTIFIED BY password
FILE_NAME_CONVERT = ('/pdbseed/', '/pdb1/');
```

#### 2. 从现有 PDB 克隆
```sql
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1;
```

#### 3. 从非 CDB 迁移(插入法)
- 先生成 XML 描述文件;
- 将数据文件复制到目标 CDB;
- 执行 `CREATE PLUGGABLE DATABASE ... USING 'xxx.xml'`;
- 最后运行 `noncdb_to_pdb.sql` 完成转换。

---

### 五、PDB 的管理操作

| 操作 | 命令示例 |
|------|----------|
| 打开 PDB | `ALTER PLUGGABLE DATABASE pdb1 OPEN;` |
| 关闭 PDB | `ALTER PLUGGABLE DATABASE pdb1 CLOSE;` |
| 设置默认服务 | `ALTER SYSTEM SET SERVICE_NAMES = 'pdb1_service';` |
| 删除 PDB | `DROP PLUGGABLE DATABASE pdb1 INCLUDING DATAFILES;` |
| 切换容器 | `ALTER SESSION SET CONTAINER = pdb1;` |

---

### 六、PDB 的典型使用场景

#### 1. 多租户 SaaS 平台
- 每个客户一个 PDB,逻辑隔离,统一运维。
- 快速克隆新租户,支持弹性扩展。

#### 2. 开发与测试环境
- 从生产 PDB 克隆测试 PDB,数据一致,风险隔离。
- 测试完成后可快速删除,节省资源。

#### 3. 数据库整合与云化
- 将多个传统数据库整合到一个 CDB 中,降低运维成本。
- 支持混合云部署,PDB 可在本地与云端之间迁移。

#### 4. 版本升级与补丁管理
- 只需升级 CDB,所有 PDB 自动继承,避免逐个升级。
- 支持滚动升级,减少停机时间。

---

### 七、PDB 的优势总结

| 维度 | 优势 |
|------|------|
| **管理简化** | 一个 CDB 管理多个 PDB,统一备份、升级、监控。 |
| **资源高效** | 共享内存和进程,减少系统开销。 |
| **快速部署** | 秒级克隆 PDB,支持模板化创建。 |
| **灵活迁移** | PDB 可在不同 CDB 之间插拔,支持跨平台迁移。 |
| **安全隔离** | 每个 PDB 独立用户、权限、数据字典,防止越权访问。 |

---

### 八、PDB 的限制与注意事项

- **版本兼容性**:PDB 只能插入相同或更高版本的 CDB。
- **字符集限制**:PDB 必须与 CDB 字符集兼容。
- **路径一致性**:迁移时数据文件路径需保持一致,或使用 `FILE_NAME_CONVERT` 转换。
- **补丁同步**:若 CDB 打了补丁,所有 PDB 必须执行 `datapatch` 才能解除受限状态。
- **许可限制**:多租户架构需 Oracle Enterprise Edition + Multitenant Option(从 19c 开始允许 3 个 PDB 免费)。

---

### 九、总结

PDB 是 Oracle 多租户架构的核心创新,它将数据库从“重装机”模式转变为“模块化插件”模式,极大提升了数据库的灵活性、可维护性和资源利用率。无论是在云环境、SaaS 平台,还是在企业内部的开发测试、数据整合场景中,PDB 都展现出强大的生命力。掌握 PDB 的创建、管理、迁移与优化,是现代 DBA 和云架构师不可或缺的技能。

---

**参考文献**:
: http://mp.weixin.qq.com/s?__biz=MzkxNjY1Njk5Mw==&mid=2247490018&idx=1&sn=17ec5eef59e2d10688d07b6577e3a121

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论