一 环境描述
源端:
|
数据库版本 |
数据库架构 |
操作系统版本 |
迁移的 pdb |
|
19.3.0.0.0 |
单机 |
RHEL7.5 |
PDB1 |
|
数据库版本 |
数据库架构 |
操作系统版本 |
迁移的 pdb |
|
19.3.0.0.0 |
单机 |
RHEL7.5 |
PDB2 |
目标端:
|
数据库版本 |
数据库架构 |
操作系统版本 |
迁移后的 pdb |
|
19.3.0.0.0 |
单机 |
RHEL7.4 |
PDBNEW |
|
数据库版本 |
数据库架构 |
操作系统版本 |
迁移后的 pdb |
|
19.3.0.0.0 |
单机 |
RHEL7.4 |
PDBNEW2 |
先决条件
1 当前用户必须具有SYSDBA 或SYSOPER 的权限。用户必须使用AS SYSDBA 或AS SYSOPER 连接。
2 PDB 必须至少打开一次。
3 确保当前容器是PDB 的根。
如果将PDB 插入CDB 根目录,则当前容器必须是CDB 根目录。如果PDB 已插入应用程序根目录,则当前容器必须是应用程序根目录。
如果要拔出应用程序容器,则当前容器必须是CDB 根目录,并且该应用程序容器中不得插入任何应用程序PDB 。
关闭PDB 。
在Oracle Real Application Clusters (Oracle RAC )环境中,必须在所有实例上关闭PDB 。
运行ALTER PLUGGABLE DATABASE 带有UNPLUG INTO 子句的语句,并指定要拔出的PDB 以及PDB 的XML 元数据文件或.pdb 文件的名称和位置。
XML 文件
一个XML 文件(扩展名为.xml )包含有关PDB 的数据,在拔出该文件后。该元数据包含使CREATE PLUGGABLE DATABASE 目标CDB 上的语句插入PDB 所需的信息。
.pdb 文件
.pdb 文件包含XML 文件的压缩归档文件,该文件描述了PDB 和PDB 使用的文件(例如数据文件和钱包文件)。.pdb 文件使您可以将单个压缩文件(而不是多个文件)复制到新位置,以将PDB 插入CDB 。
信息收集
确认要拔出的pdb show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- -------------------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 READ WRITE NO alter session set container=PDB1; Session altered. show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 PDB1 READ WRITE NO select file_name from dba_data_files; FILE_NAME ------------------------------------------------------------------- /oracle/app/oradata/ORCL/pdb1/system01.dbf /oracle/app/oradata/ORCL/pdb1/sysaux01.dbf /oracle/app/oradata/ORCL/pdb1/undotbs01.dbf /oracle/app/oradata/ORCL/pdb1/users01.dbf alter pluggable database pdb1 close; Pluggable database altered. Pdb2: alter session set container=PDB2; Session altered. show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB2 MOUNTED select name from v$datafile; NAME --------------------------------------------------------------------- /oracle/app/oradata/ORCL/pdb2/system01.dbf /oracle/app/oradata/ORCL/pdb2/sysaux01.dbf /oracle/app/oradata/ORCL/pdb2/undotbs01.dbf /oracle/app/oradata/ORCL/pdb2/users01.dbf
二 拔出pdb :
方法一:XML 方式
alter pluggable database pdb1 unplug into '/oracle/backup/pdb1.xml'; Pluggable database altered. [oracle@pdbprimary backup]$ pwd /oracle/backup [oracle@pdbprimary backup]$ ls -rtl total 8 -rw-r--r-- 1 oracle oinstall 7556 Jul 9 04:24 pdb1.xml
方法二:pdb 方式
alter pluggable database pdb2 unplug into '/oracle/backup/pdb2.pdb'; Pluggable database altered. [oracle@pdbprimary backup]$ pwd /oracle/backup [oracle@pdbprimary backup]$ ls -rtl total 131016 -rw-r--r-- 1 oracle oinstall 7556 Jul 9 04:24 pdb1.xml -rw-r--r-- 1 oracle oinstall 92856320 Jul 9 04:44 pdb2.pdb BACKUP FOR TRANSPORT PLUGGABLE DATABASE 'PDB1' FORMAT '/oracle/backup/pdb1_%U'; Starting backup at 10-JUL-20 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=41 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00010 name=/oracle/app/oradata/ORCL/pdb1/sysaux01.dbf input datafile file number=00009 name=/oracle/app/oradata/ORCL/pdb1/system01.dbf input datafile file number=00011 name=/oracle/app/oradata/ORCL/pdb1/undotbs01.dbf input datafile file number=00012 name=/oracle/app/oradata/ORCL/pdb1/users01.dbf channel ORA_DISK_1: starting piece 1 at 10-JUL-20 channel ORA_DISK_1: finished piece 1 at 10-JUL-20 piece handle=/oracle/backup/pdb1_0lv4tr76_1_1 tag=TAG20200710T014406 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45 Finished backup at 10-JUL-20 [oracle@pdbprimary pdb1]$ scp system01.dbf ora19c@192.168.238.14:/ora19c/app/oracle/oradata/ORA19C/pdbnew [oracle@pdbprimary pdb1]$ scp sysaux01.dbf ora19c@192.168.238.14:/ora19c/app/oracle/oradata/ORA19C/pdbnew [oracle@pdbprimary pdb1]$ scp undotbs01.dbf ora19c@192.168.238.14:/ora19c/app/oracle/oradata/ORA19C/pdbnew [oracle@pdbprimary pdb1]$ scp users01.dbf ora19c@192.168.238.14:/ora19c/app/oracle/oradata/ORA19C/pdbnew [oracle@pdbprimary backup]$ scp pdb1.xml ora19c@192.168.238.14:/ora19c [oracle@pdbprimary backup]$ scp pdb2.pdb ora19c@192.168.238.14:/ora19c
三 插入pdb
兼容性确认
确认/ora19c/pdb1.xml 文件描述的PDB 是否与当前CDB 是否兼容
SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/ora19c/pdb1.xml', pdb_name => 'PDBNEW') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
方法一:XML 方式
create pluggable database pdbnew using '/ora19c/pdb1.xml' source_file_name_convert=('/oracle/app/oradata/ORCL/pdb1/', '/ora19c/app/oracle/oradata/ORA19C/pdbnew/');
Pluggable database created.
show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
5 PDBNEW MOUNTED
alter pluggable database pdbnew open;
Pluggable database altered.
select con_id, dbid, guid, name , open_mode from v$pdbs;
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- -------------------- ----------
2 3860893708 A598EE1CD2A21C73E0530EEEA8C0108A PDB$SEED READ ONLY
3 1945262453 A59931254B643126E0530EEEA8C05005 PDB1 READ WRITE
5 238100001 A8964753BA696B12E05388EEA8C052C2 PDBNEW READ WRITE
alter session set container=PDBNEW;
Session altered.
select name from v$datafile;
NAME
-------------------------------------------------------------------------------------------------------------------------------
/ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964753BA696B12E05388EEA8C052C2/datafile/o1_mf_system_hjj9y93p_.dbf
/ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964753BA696B12E05388EEA8C052C2/datafile/o1_mf_sysaux_hjj9y940_.dbf
/ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964753BA696B12E05388EEA8C052C2/datafile/o1_mf_undotbs1_hjj9y94b_.dbf
/ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964753BA696B12E05388EEA8C052C2/datafile/o1_mf_users_hjj9y94h_.dbf
方法二:pdb 方式
CREATE PLUGGABLE DATABASE PDBNEW2 USING '/ora19c/pdb2.pdb' STORAGE (MAXSIZE 5G); Pluggable database created. alter pluggable database PDBNEW2 open; Pluggable database altered. select con_id, dbid, guid, name , open_mode from v$pdbs; CON_ID DBID GUID NAME OPEN_MODE ---------- ---------- -------------------------------- ------------------------------------ 2 3860893708 A598EE1CD2A21C73E0530EEEA8C0108A PDB$SEED READ ONLY 3 1945262453 A59931254B643126E0530EEEA8C05005 PDB1 MOUNTED 4 1185232805 A8964D946BE26C58E05388EEA8C0D806 PDBNEW2 READ WRITE 5 238100001 A8964753BA696B12E05388EEA8C052C2 PDBNEW MOUNTED 6 3758621293 AA61E583B5EF3661E0530EEEA8C0EB84 TESTPDB MOUNTED alter session set container=PDBNEW2; Session altered. select name from v$datafile; NAME -------------------------------------------------------------------------------------------------------------------------- /ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964D946BE26C58E05388EEA8C0D806/datafile/o1_mf_system_hjzxdo86_.dbf /ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964D946BE26C58E05388EEA8C0D806/datafile/o1_mf_sysaux_hjzxdo9f_.dbf /ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964D946BE26C58E05388EEA8C0D806/datafile/o1_mf_undotbs1_hjzxdo9j_.dbf /ora19c/app/oracle/oradata/ORA19C/ORA19C/A8964D946BE26C58E05388EEA8C0D806/datafile/o1_mf_users_hjzxdo9r_.dbf
