plugging in an unplugged PDB
unplugged PDB=XML file+all pdb files
可以使用DBMS_PDB.RECOVER过程通过PDB的data files 重新生成PDB XML file。 **
源CDB和目标CDB要求 (源cdb就是pdb以前在的cdb,目标cdb为将要plug到的cdb)
1 必须有相同的ENDIANNESS
2 必须安装有相同的数据库选项,所以以后安装cdb,还是要把所有组件都选上的。
3 字符集和国家字符集必须的兼容。
***Unplugging a PDB from a CDB
unplugged pdb必须是mount模式
alter pluggable database salespdb unplug into '/u01/app/oracle/oradata/salespdb.xml'; --卸载pdb信息到文件
但是查询v$datafile 发现pdb的所有文件还在数据库中,故先需要drop pdb,将pdb彻底从cdb中脱离,操作命令:
dropping a pdb
官档中说明要删除的pdb必须处于mount模式,但是发现不能修改pdb的打开模式。
ALTER PLUGGABLE DATABASE salespdb close immediate; --这个语句不能执行,报如下错误:
ERROR at line 1:
ORA-65086: cannot open/close the pluggable database
直接删除试试:
DROP PLUGGABLE DATABASE salespdb KEEP DATAFILES;
执行成功。
查询v$datafile,salespdb的文件不再显示,说明pdb已经完全脱离了cdb。
plugging in an unplugged PDB --将卸载下来的pdb重新plug到原cdb
1 sysdba,sysoper权限用户登录
2 检查unplugged pdb是否兼容目标CDB
SET SERVEROUTPUT ON
DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/u01/app/oracle/oradata/salespdb.xml',pdb_name => 'SALESPDB')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
返回信息:
YES
PL/SQL procedure successfully completed.
yes说明兼容
3 plug
CREATE PLUGGABLE DATABASE salespdb USING '/u01/app/oracle/oradata/salespdb.xml' NOCOPY TEMPFILE REUSE;
--成功
--nocopy指的是pdb的文件和xml文件中描述的相符,不需要再拷贝到新的目录。
检查v$PDBS,发现salespdb的状态为mounted。
dba_pdbs中的status为new
4 打开pdb
alter pluggable database salespdb open read write;
SQL> alter pluggable database salespdb open read write;
Pluggable database altered.
SQL> select * from v$pdbs;
CON_ID DBID CON_UID GUID NAME OPEN_MODE RES OPEN_TIME
CREATE_SCN
---------- ---------- ---------- -------------------------------- ------------------------------ ---------- ---
--------------------------------------------------------------------------- ----------
TOTAL_SIZE
----------
2 4075701576 4075701576 EC9E7999CC2D1BD1E043140BA8C062C8 PDB$SEED READ ONLY NO 04-DEC-13 11.26.11.381 PM
227
393216000
3 2278220423 2278220423 ECC51D04E9A4592DE043140BA8C048CA SALESPDB READ WRITE NO 04-DEC-13 11.58.07.759 PM
1775312
398458880
SQL>
--检查一下数据文件信息:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/newcdb/system01.dbf
/u01/app/oracle/oradata/newcdb/pdbseed/system01.dbf
/u01/app/oracle/oradata/newcdb/sysaux01.dbf
/u01/app/oracle/oradata/newcdb/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/newcdb/undotbs01.dbf
/u01/app/oracle/oradata/newcdb/users01.dbf
/u01/app/oracle/oradata/newcdb/salespdb/system01.dbf
/u01/app/oracle/oradata/newcdb/salespdb/sysaux01.dbf
/u01/app/oracle/oradata/newcdb/salespdb/salespdb_users01.dbf
9 rows selected.
SQL>
--数据文件又回来了。
5 对新加的pdb进行备份。
after plugging in an unplugged PDB
涉及一些用户和temp表空间的东西。