在 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 选项。
安全删除步骤:
-
首先,确保 PDB 处于关闭或读写打开状态。
-- 如果 PDB 是打开的,先关闭它
ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
-- 或者,确保它以读写模式打开
ALTER PLUGGABLE DATABASE pdb_name OPEN;
-
执行删除命令,并保留数据文件。这是一个谨慎的做法,万一误删,数据文件还在。
DROP PLUGGABLE DATABASE pdb_name KEEP DATAFILES;
-
确认该 PDB 确实不再需要后,你可以手动到操作系统层删除对应的数据文件目录(例如 /oradata/cdb_name/pdb_name)。
直接删除(慎用):
如果你确定要连同数据文件一起删除,可以在 PDB 关闭后使用以下命令,但这将无法恢复:
DROP PLUGGABLE DATABASE pdb_name INCLUDING DATAFILES;
总结
掌握 PDB 的克隆与删除是高效管理 Oracle 多租户环境的基础。克隆功能为快速搭建隔离的测试或开发环境提供了极大便利,而谨慎的删除流程则能有效防止数据丢失。如果你想深入了解更复杂的多租户架构设计与运维,可以参考 数据库/中间件/技术栈 板块中的相关讨论。在实际操作中,请务必根据你的环境修改 CDB 名称、PDB 名称和目录路径,并在生产环境执行删除操作前做好备份。
|