PDB创建之plug pdb into other cdb

通过plug方式创建pdb数据库,如下图描述



现在需要把oracle12中的pdb2插入到cdb1容器中
C:\Users\Administrator>set oracle_sid=oracle12c
C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on 星期一 12月 29 09:33:15 2014
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         4 PDB2                           MOUNTED
         5 PDB3                           MOUNTED
         6 PDB4                           MOUNTED
         7 PDB5                           MOUNTED
         8 PDB6                           MOUNTED
SQL>

1.生成描述PDB的xml文件pdb2.xml
SQL> BEGIN
  2    DBMS_PDB.DESCRIBE(
  3      pdb_descr_file => 'D:\app\oracle12c\xml\pdb2.xml',
  4      pdb_name       => 'pdb2');
  5  END;
  6  /
BEGIN
*
第 1 行出现错误:
ORA-65081: 未以只读模式打开数据库或可插入数据库
ORA-06512: 在 "SYS.DBMS_PDB", line 13
ORA-06512: 在 line 2

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         4 PDB2                           MOUNTED
         5 PDB3                           MOUNTED
         6 PDB4                           MOUNTED
         7 PDB5                           MOUNTED
         8 PDB6                           MOUNTED
SQL> alter pluggable database pdb2 open read only;
插接式数据库已变更。
SQL> BEGIN
  2    DBMS_PDB.DESCRIBE(
  3      pdb_descr_file => 'D:\app\oracle12c\xml\pdb2.xml',
  4      pdb_name       => 'pdb2');
  5  END;
  6  /
PL/SQL 过程已成功完成。
SQL>  

2.不unplug pdb2直接把pdb2 插入到cdb1容器中
C:\Users\Administrator>set oracle_sid=cdb1
C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on 星期一 12月 29 09:32:30 2014
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CDB1PDB1                       MOUNTED
SQL>
SQL>
SQL> CREATE PLUGGABLE DATABASE salespdb USING 'D:\app\oracle12c\xml\pdb2.xml'
  2    COPY
  3    FILE_NAME_CONVERT = ('D:\app\oracle12c\oradata\ORACLE12C\pdb2', 'D:\app\oracle12c\oradata\cdb1\pdb2');
插接式数据库已创建。

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CDB1PDB1                       MOUNTED
         4 SALESPDB                       MOUNTED
3.打开pdb容器
SQL> alter pluggable database salespdb open;
插接式数据库已变更。
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CDB1PDB1                       MOUNTED
         4 SALESPDB                       READ WRITE NO
SQL>

也可以通过把pdb2先unplug 然后在插入到cdb1容器中如下:
ALTER PLUGGABLE DATABASE pdb2 UNPLUG INTO 'D:\app\oracle12c\xml\unplugpdb2.xml';
C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on 星期一 12月 29 10:15:35 2014
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         4 PDB2                           READ ONLY  NO
         5 PDB3                           MOUNTED
         6 PDB4                           MOUNTED
         7 PDB5                           MOUNTED
         8 PDB6                           MOUNTED
SQL>
unplug pdb2报错原因是pdb没有关闭
SQL> ALTER PLUGGABLE DATABASE pdb2 UNPLUG INTO 'D:\app\oracle12c\xml\unplugpdb2.
xml';
ALTER PLUGGABLE DATABASE pdb2 UNPLUG INTO 'D:\app\oracle12c\xml\unplugpdb2.xml'
*
第 1 行出现错误:
ORA-65025: 未在所有实例上关闭可插入数据库 PDB2。
SQL> alter pluggable database pdb2 close immediate;
插接式数据库已变更。
SQL> ALTER PLUGGABLE DATABASE pdb2 UNPLUG INTO 'D:\app\oracle12c\xml\unplugpdb2.xml';
插接式数据库已变更。
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         4 PDB2                           MOUNTED
         5 PDB3                           MOUNTED
         6 PDB4                           MOUNTED
         7 PDB5                           MOUNTED
         8 PDB6                           MOUNTED
         
unplug掉pdb2之后试图打开pdb2报错,unplug之后pdb是不能打开的
SQL> alter pluggable database pdb2 open;
alter pluggable database pdb2 open
*
第 1 行出现错误:
ORA-65086: 无法打开/关闭可插入数据库
SQL>

把unplug掉之后的数据库plug到容器cdb1中
plug插入报错原因是由于之前已经插入过一次了造成了guid冲突 
SQL> CREATE PLUGGABLE DATABASE pdb2unplug USING 'D:\app\oracle12c\xml\unplugpdb2.xml'
  2    COPY
  3    FILE_NAME_CONVERT = ('D:\app\oracle12c\oradata\ORACLE12C\pdb2', 'D:\app\oracle12c\oradata\cdb1\pdb2unplug');
CREATE PLUGGABLE DATABASE pdb2unplug USING 'D:\app\oracle12c\xml\unplugpdb2.xml'
*
第 1 行出现错误:
ORA-65122: 可插入数据库 GUID 与现有容器的 GUID 冲突。

加上AS CLONE字句可以确保新的pdb有唯一的标识
SQL>
SQL> CREATE PLUGGABLE DATABASE pdb2unplug AS CLONE USING 'D:\app\oracle12c\xml\unplugpdb2.xml'
  2    COPY
  3    FILE_NAME_CONVERT = ('D:\app\oracle12c\oradata\ORACLE12C\pdb2', 'D:\app\oracle12c\oradata\cdb1\pdb2unplug');
插接式数据库已创建。
SQL>

打开新插入的pdb
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CDB1PDB1                       MOUNTED
         4 SALESPDB                       READ WRITE NO
         5 PDB2UNPLUG                     MOUNTED
SQL> alter pluggable database pdb2unplug open;
插接式数据库已变更。
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CDB1PDB1                       MOUNTED
         4 SALESPDB                       READ WRITE NO
         5 PDB2UNPLUG                     READ WRITE NO
SQL>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值