现在的位置: 首页 > 综合 > 正文

同一个CDB中卸载PDB再加载PDB的操作过程

2018年02月07日 ⁄ 综合 ⁄ 共 2983字 ⁄ 字号 评论关闭

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表空间的东西。

 

抱歉!评论已关闭.