Oracle PDB 概念与架构

Oracle PDB 概念与架构

日期 :2026-03-18
来源 :https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html
标签:#Oracle #PDB #多租户 #CDB


核心概念

Oracle 12c 引入多租户架构,允许一个 Oracle 数据库作为容器数据库(CDB)运行,内部承载多个可插拔数据库(PDB)。

容器类型

容器 说明
CDB Root (CDB$ROOT) 存储 Oracle 元数据和公共用户,每个 CDB 只有一个
PDB$SEED 系统提供的种子模板,用于创建新 PDB,不可修改
PDB 用户创建的可插拔数据库,对应用来说像一个完整独立数据库
应用容器 包含应用根和一组相关应用 PDB,用于多租户应用场景
系统容器 逻辑容器,包含 Root 和所有 PDB

用户类型

  • 公共用户(Common User):在 CDB 所有容器中均存在,如 SYS
  • 本地用户(Local User):仅存在于某个 PDB,权限不跨容器

架构示意

复制代码
CDB(容器数据库)
├── CDB$ROOT(根容器)
├── PDB$SEED(种子,只读)
├── PDB1(用户数据库 A)
├── PDB2(用户数据库 B)
└── 应用容器
    ├── 应用根
    ├── 应用种子
    └── 应用 PDB

核心优势

  • 资源共享:多个 PDB 共享同一套内存和后台进程,降低成本
  • 快速移植:PDB 可整体插入/拔出,迁移极为便捷
  • 隔离性:每个 PDB 有自己的数据字典和表空间,互不影响
  • 独立恢复:可对单个 PDB 执行 Flashback,不影响其他 PDB
  • 字符集灵活:CDB 使用 AL32UTF8 时,各 PDB 可用不同字符集

重要限制

⚠️ 数据库一旦创建就固定为 CDB 或非 CDB,不可转换。

sql 复制代码
-- 创建 CDB(必须在建库时声明)
CREATE DATABASE cdb1
  ENABLE PLUGGABLE DATABASE;

-- 验证是否为 CDB
SELECT NAME, CDB FROM V$DATABASE;

常用查询

sql 复制代码
-- 查看所有 PDB
SHOW PDBS;
SELECT NAME, OPEN_MODE FROM V$PDBS;

-- 查看当前所在容器
SHOW CON_NAME;
SHOW CON_ID;

-- 切换到指定 PDB
ALTER SESSION SET CONTAINER = pdb_name;

相关推荐
IvorySQL11 小时前
PostgreSQL 日报|恢复期 COPY TO 未日志表修复(10 月 21 日)
数据库·postgresql·区块链
程序员-Benothing12 小时前
Linux安全加固指南:账号、权限、服务、审计基线
linux·运维·安全
Mininglamp_271812 小时前
接口调用 vs 屏幕理解:两种 GUI 自动化架构的技术取舍
运维·架构·自动化
贝猫说python12 小时前
大模型比赛2.3智能体开发(工具调用智能问答助手)
数据库·oracle
许彰午14 小时前
28-ORA-01110数据文件读取错误
数据库·oracle
凯凯姜14 小时前
MySQL 联合索引设计与索引失效
数据库·mysql
爱喝水的鱼丶14 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
猫咪很可爱14 小时前
Oracle TEMP 表空间不足(ORA-01652)问题分析与优化实践
数据库·oracle
木子欢儿15 小时前
openconnect Linux客户端安装 以及开机自启和登录
linux·运维·服务器
..Dauntless..15 小时前
【Linux】文件系统(一)
linux·运维·服务器