找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

929

积分

0

好友

115

主题
发表于 昨天 05:26 | 查看: 0| 回复: 0

在 Oracle 的多租户架构中,可插拔数据库(PDB)的克隆操作是一项非常实用的技能,无论是用于搭建测试环境还是数据迁移。本文将一步步演示如何从一个已有的本地 PDB 克隆出一个新的 PDB,并介绍如何安全地删除不再需要的 PDB。

1. 准备工作:创建目标目录

首先,我们需要为即将克隆出来的新 PDB 准备存储数据文件的位置。以 oracle 用户身份操作,创建一个新目录。

su - oracle
mkdir /oradata/cdb_name/pdb_name3

2. 设置数据库默认文件目录

为了简化克隆命令,我们可以临时设置数据库的默认文件创建路径指向我们新建的目录。克隆完成后,建议恢复此设置。

alter system set db_create_file_dest='/oradata/cdb_name/pdb_name3';

-- 克隆完之后恢复原设置
-- alter system reset db_create_file_dest;

3. 将源 PDB 置于只读模式

克隆操作要求源 PDB 处于只读状态。我们先关闭它,然后以只读模式重新打开。

ALTER PLUGGABLE DATABASE pdb_name2 CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE pdb_name2 OPEN READ ONLY;

4. 执行克隆命令

核心步骤来了,使用 CREATE PLUGGABLE DATABASE ... FROM ... 语句进行克隆。这里 pdb_name3 是新 PDB 的名称,pdb_name2 是源 PDB。

CREATE PLUGGABLE DATABASE pdb_name3 FROM pdb_name2;

5. 打开并使用新 PDB

克隆完成后,需要打开新的 PDB 才能使用。你也可以切换会话到新 PDB 中进行后续操作。

-- 打开新 PDB
alter pluggable database pdb_name3 open; 

-- (可选)将当前会话切换到新 PDB
alter session set container=pdb_name3;

至此,一个从本地 PDB 克隆出来的新 PDB pdb_name3 就创建完毕并可以正常使用了。

6. PDB 数据库的删除

当我们不再需要某个 PDB 时,可以将其删除。Oracle 提供了两种删除方式:INCLUDING DATAFILES(同时删除数据文件)和 KEEP DATAFILES(保留数据文件)。为了安全起见,通常先使用 KEEP DATAFILES 选项。

安全删除步骤:

  1. 首先,确保 PDB 处于关闭或读写打开状态。

    -- 如果 PDB 是打开的,先关闭它
    ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
    
    -- 或者,确保它以读写模式打开
    ALTER PLUGGABLE DATABASE pdb_name OPEN;
  2. 执行删除命令,并保留数据文件。这是一个谨慎的做法,万一误删,数据文件还在。

    DROP PLUGGABLE DATABASE pdb_name KEEP DATAFILES;
  3. 确认该 PDB 确实不再需要后,你可以手动到操作系统层删除对应的数据文件目录(例如 /oradata/cdb_name/pdb_name)。

直接删除(慎用):
如果你确定要连同数据文件一起删除,可以在 PDB 关闭后使用以下命令,但这将无法恢复:

DROP PLUGGABLE DATABASE pdb_name INCLUDING DATAFILES;

总结

掌握 PDB 的克隆与删除是高效管理 Oracle 多租户环境的基础。克隆功能为快速搭建隔离的测试或开发环境提供了极大便利,而谨慎的删除流程则能有效防止数据丢失。如果你想深入了解更复杂的多租户架构设计与运维,可以参考 数据库/中间件/技术栈 板块中的相关讨论。在实际操作中,请务必根据你的环境修改 CDB 名称、PDB 名称和目录路径,并在生产环境执行删除操作前做好备份。




上一篇:CloudCone服务器被黑丢数据后的思考:独立站长的“瞎折腾”启示录
下一篇:从零到一:我的白标Perp DEX开发手记之充提模块设计
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-3 00:58 , Processed in 0.288073 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表