通过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>