Oracle PDB Application Seed 详解

Oracle PDB Application Seed 详解

适用版本:Oracle Database 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Application Seed 是 Application Container 中的模板[1]:

详细见:Oracle Application Container 应用容器Oracle 多租户架构 CDB PDB


2. 概念

2.1 Application Container

- Application Root
- Application PDB
- Application Seed
- 共享元数据

2.2 Application Seed

- 模板 PDB
- 应用程序定义
- 快速创建 PDB
- 标准化

3. 创建

3.1 创建 Application Container

-- CDB 中
CREATE PLUGGABLE DATABASE app_root AS APPLICATION CONTAINER
  ADMIN USER app_admin IDENTIFIED BY ******
ALTER PLUGGABLE DATABASE app_root OPEN;

3.2 切换到 Application Root

ALTER SESSION SET CONTAINER = app_root;

3.3 创建 Application Seed

CREATE PLUGGABLE DATABASE AS SEED
  ADMIN USER seed_admin IDENTIFIED BY ******

4. 安装应用

4.1 在 Application Root

ALTER SESSION SET CONTAINER = app_root;

BEGIN
  DBMS_APP_CONT.BEGIN_INSTALL(
    app_name => 'my_app',
    app_version => '1.0',
    app_comment => 'First version'
  );
END;
/

-- 创建应用对象
CREATE TABLE app_root_table (...);
CREATE PACKAGE app_pkg AS ...;
CREATE VIEW app_view AS ...;

-- 结束
EXEC DBMS_APP_CONT.END_INSTALL;

4.2 同步到 Seed

ALTER PLUGGABLE DATABASE application_seed SYNC;

5. 使用 Seed 创建 PDB

5.1 从 Seed

ALTER SESSION SET CONTAINER = app_root;

CREATE PLUGGABLE DATABASE pdb1 
  AS SEED;

5.2 从 Application Seed

CREATE PLUGGABLE DATABASE pdb2 
  FROM application_seed;
ALTER PLUGGABLE DATABASE pdb2 OPEN;

5.3 同步

ALTER SESSION SET CONTAINER = pdb2;
EXEC DBMS_APP_CONT.SYNC;

6. 应用升级

6.1 在 Application Root

ALTER SESSION SET CONTAINER = app_root;

BEGIN
  DBMS_APP_CONT.BEGIN_UPGRADE(
    app_name => 'my_app',
    app_version => '2.0'
  );
END;
/

-- 升级对象
ALTER TABLE app_root_table ADD (...);
CREATE TABLE new_table (...);

EXEC DBMS_APP_CONT.END_UPGRADE;

6.2 同步

-- 每个 PDB
ALTER SESSION SET CONTAINER = pdb1;
EXEC DBMS_APP_CONT.SYNC;

6.3 Seed 同步

ALTER SESSION SET CONTAINER = app_root;
ALTER PLUGGABLE DATABASE application_seed SYNC;

7. 管理

7.1 查看

SELECT * FROM dba_app_pdb;
SELECT * FROM dba_app_seed;
SELECT * FROM dba_applications;
SELECT * FROM dba_app_versions;

7.2 修改

ALTER PLUGGABLE DATABASE application_seed OPEN;
ALTER PLUGGABLE DATABASE application_seed CLOSE;
ALTER PLUGGABLE DATABASE application_seed SAVE STATE;

7.3 删除

DROP PLUGGABLE DATABASE application_seed INCLUDING DATAFILES;

8. 应用场景

8.1 SaaS

- 多租户
- 每租户一个 PDB
- 标准化

8.2 应用分发

- 应用模板
- 快速部署
- 一致

8.3 升级

- 集中升级
- 各 PDB 同步
- 标准

9. 优势

9.1 标准化

- 模板
- 统一
- 一致

9.2 快速

- 快速创建 PDB
- 模板
- 节省

9.3 维护

- 集中维护
- 同步
- 自动

10. 与普通 PDB 对比

普通 PDBApplication Seed
容器CDB RootApplication Root
元数据CDB RootApplication Root
应用单独共享
升级单独集中

11. 监控

11.1 状态

SELECT pdb_name, status, application_root, application_seed
FROM dba_pdbs;

11.2 应用

SELECT app_name, app_version, app_status
FROM dba_applications;

11.3 同步

SELECT pdb_name, app_name, app_version, sync_status
FROM dba_app_statements;

12. 常见问题

12.1 同步失败

- 检查
- 重新同步

12.2 升级

- 版本
- 兼容
- 测试

12.3 创建失败

- 空间
- 权限
- 检查

13. 最佳实践

  1. Application Container:SaaS
  2. Seed:模板
  3. 版本控制:清晰
  4. 升级测试:必做
  5. 同步:定期
  6. 监控:状态
  7. 文档:应用
  8. 备份:Seed
  9. 演练:升级
  10. 回退:预案

14. 参考资料

[1] Oracle Database Administrator’s Guide 19c, “Application Containers” https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/