使用DBMS_PDB把一个11g数据库插入到12c cdb中去
环境:
windows 7
源库:orcl oracle 11.2.0.4
目标库:cdbdb 12.2.0.1 ,pdb:sztech
1.源库先升级到12c
这个步骤略,可以通过dbua完成
2.原库以只读方式打开
SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup open read only;
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ---------------------- -------------------------
db_name string orcl
SQL> select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ ONLY
SQL>
3.源库生成xml信息
SQL> EXEC DBMS_PDB.DESCRIBE('d:\orcl.xml');
PL/SQL 过程已成功完成。
4.把源库的数据文件及xml文件拷贝到目标库所在机器
5.修改xml文件中数据文件的位置,与实际位置相匹配
比如新的文件位置为:
D:\oracle\oradata\cdbdb\sztech
6.使用有 CREATE PLUGGABLE DATABASE 权限的用户登陆目标库
sqlplus /nolog
sql>conn / as sysdba
SQL> conn / as sysdba
已连接。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
SQL>
7.插入目标库
在目标库,把源库orcl以 sztech为pdb名字插入目标容器库中
--由于文件已经拷贝到目标,在命令行上带上 nocopy,否则,可以使用 FILE_NAME_CONVERT ('xml文件中数据文件位置','新的位置')
CREATE PLUGGABLE DATABASE sztech USING 'd:\orcl.xml' nocopy tempfile reuse;
SQL> CREATE PLUGGABLE DATABASE sztech USING 'd:\orcl.xml' nocopy tempfile reuse;
插接式数据库已创建。
SQL>
查看一下pdb情况
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 SZTECH MOUNTED
SQL>
8.运行noncdb_to_pdb.sql脚本
切换到sztech pdb
SQL> alter session set container=sztech;
会话已更改。
SQL> show con_name
CON_NAME
------------------------------
SZTECH
SQL>
--执行脚本noncdb_to_pdb.sql脚本
@RACLE_HOMErdbms/admin/noncdb_to_pdb.sql
9.最后打开pdb
alter pluggable database sztech open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 SZTECH MOUNTED
SQL> alter pluggable database open;
插接式数据库已变更。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 SZTECH READ WRITE NO
SQL>