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;

相关推荐
科技小花1 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化
X56612 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
johnny2332 小时前
运维管理面板:AcePanel、OpenOcta、DeepSentry
运维
青梅橘子皮2 小时前
Linux---基本指令
linux·运维·服务器
REDcker3 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
虹科网络安全3 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717213 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
小江的记录本4 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
cui_ruicheng4 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
dvjr cloi4 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql