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 对比
| 项 | 普通 PDB | Application Seed |
|---|---|---|
| 容器 | CDB Root | Application Root |
| 元数据 | CDB Root | Application 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. 最佳实践
- Application Container:SaaS
- Seed:模板
- 版本控制:清晰
- 升级测试:必做
- 同步:定期
- 监控:状态
- 文档:应用
- 备份:Seed
- 演练:升级
- 回退:预案
14. 参考资料
[1] Oracle Database Administrator’s Guide 19c, “Application Containers” https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/