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 RootCDB$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;

相关推荐
为思念酝酿的痛3 小时前
POSIX信号量
linux·运维·服务器·后端
专业白嫖怪3 小时前
什么是docker
运维·docker·容器
ccddsdsdfsdf3 小时前
DBeaver怎么链接mongoDB
数据库·mongodb
丷丩4 小时前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空994 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
人还是要有梦想的4 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通4 小时前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops4 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush44 小时前
嵌入式linux学习记录二
linux·运维·学习
TheRouter5 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
数据库·人工智能·oracle