DBAtlas · 数据库运维图谱

拔出(unplug)PDB 并插入另一个(或同一个)CDB

Oracle多租户

命令

-- SOURCE CDB: close and unplug to an XML manifest
ALTER PLUGGABLE DATABASE <pdb> CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE <pdb> UNPLUG INTO '/u01/stage/<pdb>.xml';
-- (Single-file archive: UNPLUG INTO '/u01/stage/<pdb>.pdb' - includes datafiles, 12.2+)
DROP PLUGGABLE DATABASE <pdb> KEEP DATAFILES;

-- TARGET CDB: check compatibility first
SET SERVEROUTPUT ON
DECLARE
  l_ok BOOLEAN;
BEGIN
  l_ok := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
            pdb_descr_file => '/u01/stage/<pdb>.xml',
            pdb_name       => '<pdb>');
  DBMS_OUTPUT.PUT_LINE(CASE WHEN l_ok THEN 'COMPATIBLE' ELSE 'NOT COMPATIBLE - see PDB_PLUG_IN_VIOLATIONS' END);
END;
/
SELECT name, cause, type, status, message
FROM   pdb_plug_in_violations
WHERE  name = UPPER('<pdb>') AND status <> 'RESOLVED';

-- NOCOPY if the files stay in place, COPY FILE_NAME_CONVERT if they move:
CREATE PLUGGABLE DATABASE <pdb> USING '/u01/stage/<pdb>.xml' NOCOPY TEMPFILE REUSE;
-- From a .pdb archive: CREATE PLUGGABLE DATABASE <pdb> USING '/u01/stage/<pdb>.pdb'
--                    FILE_NAME_CONVERT = ('/u01/stage/', '/u02/oradata/<cdb>/<pdb>/');
ALTER PLUGGABLE DATABASE <pdb> OPEN;

作用

将 PDB 从 CDB 中分离,并把元数据写入 XML 清单(或与数据文件一起打包为单个 .pdb 归档);兼容性检查后,使用相同文件将其插入目标 CDB。

适用场景

用于将 PDB 迁移到同一服务器上更新版本的 CDB(unplug/plug 升级)、CDB 整合,或无法通过网络克隆的迁移。

注意

拔出后,PDB 在源 CDB 中不可用(停机)。使用 NOCOPY 插入的文件此后归目标 CDB 所有;请先做文件级副本或 RMAN 备份,以便失败时回退。在 ERROR 类违规解决之前,PDB 会以 RESTRICTED 方式打开。重新插入同一 CDB 时,省略 AS CLONE 可能导致 GUID 冲突。

在 DBAtlas 中打开 →

相关内容