Oracle PDB 创建

Oracle PDB 创建


前置条件

  • 当前连接到 CDB Root(CDB$ROOT)
  • 具有 CREATE PLUGGABLE DATABASE 系统权限
  • 目标路径有足够空间和写权限

方式一:从种子创建(最常用)

基于 PDB$SEED 模板创建全新 PDB:

sql 复制代码
-- 基础创建
CREATE PLUGGABLE DATABASE hrpdb
  ADMIN USER pdb_admin IDENTIFIED BY password
  FILE_NAME_CONVERT=('/pdbseed/', '/hrpdb/');

-- 创建后打开
ALTER PLUGGABLE DATABASE hrpdb OPEN READ WRITE;

-- 保存状态(CDB 重启后自动恢复打开状态)
ALTER PLUGGABLE DATABASE hrpdb SAVE STATE;

常用参数:

参数 说明
ADMIN USER 创建 PDB 本地管理员账号
FILE_NAME_CONVERT 数据文件路径转换规则
CREATE_FILE_DEST 指定文件存放目录(Oracle 管理文件时使用)
STORAGE (MAXSIZE xG) 限制 PDB 最大存储空间
DEFAULT TABLESPACE 设置默认表空间

方式二:克隆现有 PDB

本地克隆

sql 复制代码
-- 将源 PDB 设置为只读(本地克隆要求)
ALTER PLUGGABLE DATABASE hrpdb CLOSE;
ALTER PLUGGABLE DATABASE hrpdb OPEN READ ONLY;

-- 执行克隆
CREATE PLUGGABLE DATABASE salespdb FROM hrpdb
  FILE_NAME_CONVERT=('/hrpdb/', '/salespdb/');

-- 恢复源 PDB 读写
ALTER PLUGGABLE DATABASE hrpdb CLOSE;
ALTER PLUGGABLE DATABASE hrpdb OPEN READ WRITE;

-- 打开新 PDB
ALTER PLUGGABLE DATABASE salespdb OPEN READ WRITE;

远程克隆(跨 CDB)

sql 复制代码
-- 先创建数据库链接
CREATE DATABASE LINK lnk_to_src
  CONNECT TO c##admin IDENTIFIED BY password
  USING 'source_cdb';

-- 远程克隆(源 PDB 无需停机)
CREATE PLUGGABLE DATABASE salespdb
  FROM hrpdb@lnk_to_src
  FILE_NAME_CONVERT=('/hrpdb/', '/salespdb/');

方式三:插入已拔出的 PDB

sql 复制代码
-- 使用 XML 描述文件插入
CREATE PLUGGABLE DATABASE salespdb
  USING '/backup/salespdb.xml'
  NOCOPY
  TEMPFILE REUSE;

-- NOCOPY:数据文件不移动,直接使用原路径
-- COPY:复制文件到新路径(默认)
-- MOVE:移动文件到新路径

方式四:重定位 PDB(迁移)

sql 复制代码
-- 从远程 CDB 迁移过来,源 PDB 自动关闭
CREATE PLUGGABLE DATABASE hrpdb
  FROM hrpdb@lnk_to_source
  RELOCATE
  AVAILABILITY MAX;

详见:\[Oracle PDB 迁移与重定位]


方式五:快照克隆

sql 复制代码
-- 先创建快照
ALTER PLUGGABLE DATABASE pdb1 SNAPSHOT pdb1_snap_20260318;

-- 从快照克隆(速度极快,节省空间)
CREATE PLUGGABLE DATABASE pdb1_test
  FROM pdb1
  USING SNAPSHOT pdb1_snap_20260318;

方式六:代理 PDB

代理 PDB 是指向远程 CDB 中某个 PDB 的引用,本地不存储数据:

sql 复制代码
CREATE PLUGGABLE DATABASE proxy_pdb
  AS PROXY FROM pdb1@remote_link;

创建后验证

sql 复制代码
-- 查看 PDB 状态
SHOW PDBS;
SELECT NAME, OPEN_MODE, RESTRICTED FROM V$PDBS;

-- 查看 PDB 数据文件
SELECT FILE#, NAME FROM V$DATAFILE WHERE CON_ID = (
  SELECT CON_ID FROM V$PDBS WHERE NAME = 'HRPDB'
);

-- 查看兼容性警告
SELECT * FROM PDB_PLUG_IN_VIOLATIONS WHERE NAME = 'HRPDB';

删除 PDB

sql 复制代码
-- 先关闭,再删除(INCLUDING DATAFILES 同时删除物理文件)
ALTER PLUGGABLE DATABASE hrpdb CLOSE IMMEDIATE;
DROP PLUGGABLE DATABASE hrpdb INCLUDING DATAFILES;

相关推荐
R²AIN SUITE7 分钟前
企业智能体平台私有化部署需要什么服务器?CPU、内存、显卡与项目管理集成的7个评估项
运维·服务器
hey you~11 分钟前
云呼叫中心坐席自动分配实战:ACD 策略、Redis+Lua 实现与排查清单
数据库·redis·lua·云呼叫中心·acd·坐席分配·坐席状态机
刚入门的大一新生14 分钟前
Linux-线程封装
linux·运维·服务器
夜雪一千21 分钟前
MySQL 数据字典如何获得
数据库·mysql
系统集成-鹰翔26 分钟前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
n1121227 分钟前
Docker 容器时区错 8 小时:3 个坑
运维·docker·容器·故障排查·服务器运维·容器时区
QianhangQianping28 分钟前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
honsor29 分钟前
用 Grafana 做温湿度异常检测:从阈值告警到趋势预测
数据库·mysql·php
Android系统攻城狮33 分钟前
Linux FFmpeg深度解析之av_dump_format调用流程与实战(十一)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
赵渝强老师41 分钟前
【赵渝强老师】YashanDB Developer Center(YDC,崖山数据库开发者中心)
数据库·国产数据库·yashandb·崖山数据库