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;

相关推荐
赵渝强老师1 小时前
【赵渝强老师】高斯数据库(openGauss)的模式
数据库·opengauss·国产数据库·高斯数据库
huainingning1 小时前
华三ACL单向TCP互通组网-通过Established状态回包实现
运维·网络·tcp/ip
长不胖的路人甲1 小时前
Redis 数据删除策略
数据库·redis·spring
ClouGence1 小时前
SQL Server CDC 如何降低主库压力?Always On 备库读取实践
数据库·后端·sql·sqlserver
researcher-Jiang2 小时前
高性能计算之MPI:第一次MPI并行程序设计练习
linux·运维·服务器
Promise微笑2 小时前
工业微量水分监测:精密露点仪选型逻辑与行业应用实证深度报告
大数据·运维
尽兴-2 小时前
Redis 为什么快?
数据库·redis·内存
林澈在路上2 小时前
最新版权清晰 AI音乐写歌工具软件App推荐 商用全场景实测指南
数据库·人工智能·ai·aigc·音频
Full Stack Developme2 小时前
正则表达式的使用教程
java·数据库·正则表达式
大郭鹏宇3 小时前
MongoDB快速实战与基本原理入门
数据库·mongodb