目标:
使用unplug/plug 把PDB1 从CDB1中迁移到CDB2
环境:
源端:CDB1
目标:CDB2
需要迁移的PDB:PDB1
步骤:
1.登陆CDB1
[oracle@dbserver ~]$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:03:52 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
@ >conn / as sysdba
Connected.
SYS@cdb1 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB3 MOUNTED
6 PDB_ORCL READ WRITE NO
2.关闭PDB1
SYS@cdb1 >alter pluggable database pdb1 close;
Pluggable database altered.
SYS@cdb1 >select name from v$datafile where con_id=3;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/tsp_pdb1.dbf
3.拔下 PDB1
SYS@cdb1 >alter pluggable database pdb1 unplug into '/tmp/pdb1.xml';
Pluggable database altered.
--验证XML文件存在
SYS@cdb1 >! ls -ltr /tmp/pdb1.xml
-rw-r--r-- 1 oracle asmadmin 7903 Oct 22 14:06 /tmp/pdb1.xml
SYS@cdb1 >
4.删除PDB1
SYS@cdb1 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB3 MOUNTED
6 PDB_ORCL READ WRITE NO
SYS@cdb1 >drop pluggable database pdb1;
Pluggable database dropped.
--确认PDB1在CDB1不再存在
SYS@cdb1 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 PDB3 MOUNTED
6 PDB_ORCL READ WRITE NO
SYS@cdb1 >
--说明
5.文件拷贝
生产中,CDB1和CDB2不在同一台机器,这个时候,需要把 PDB1的数据文件和XML文件一同拷贝到CDB2去,我们这里都在一台机器,所以,此步骤略。
6.登陆CDB2
[oracle@dbserver ~]$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:09:17 2023
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
@ >conn / as sysdba
Connected.
SYS@cdb2 >show con_name
CON_NAME
------------------------------
CDB$ROOT
SYS@cdb2 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
7.创建PDB
使用拔下的PDB1
SYS@cdb2 >create pluggable database pdb1
2 using '/tmp/pdb1.xml'
3 nocopy;
Pluggable database created.
SYS@cdb2 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
4 PDB1 MOUNTED
8.数据文件及GUID不变
SYS@cdb2 >select name from v$datafile where con_id=4;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/tsp_pdb1.dbf
SYS@cdb2 >select name,guid from v$pdbs where con_id=4;
NAME GUID
----------------------------- --------------------------------
PDB1 07BE9065CAE69697E0637885A8C080A5
9.打开
SYS@cdb2 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
4 PDB1 MOUNTED
SYS@cdb2 >alter pluggable database pdb1 open;
SYS@cdb2 >show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
4 PDB1 READ WRITE NO
SYS@cdb2 >