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;

相关推荐
等....8 小时前
Redis使用
数据库·redis·mybatis
betazhou8 小时前
记一次Oracle REDO在线日志损坏故障修复
数据库·oracle·redo·ora-00600
一只小bit8 小时前
Redis 初步入门教程:简单介绍和安装配置
数据库·redis·缓存
魔都吴所谓8 小时前
【Ubuntu】22.04安装 CMake 3.24
linux·运维·ubuntu
守城小轩8 小时前
基于Chrome140的INS账号自动化——需求分析&环境搭建(一)
运维·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
ChatInfo8 小时前
Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模
数据库·人工智能·mysql
w6100104668 小时前
CKA-2026-resources
运维·docker·容器·cka
程序员老邢8 小时前
【技术底稿 11】内网私有 Docker 镜像仓库 Registry2 全流程部署(多机共享,告别离线拷贝)
运维·docker·容器·架构·devops
SPC的存折9 小时前
6、MySQL设置TLS加密访问
linux·运维·服务器·数据库·mysql
老苏畅谈运维9 小时前
DBA分析 ORA 报错的利器,errorstack让 Oracle 错误现原形
数据库·oracle·dba