ORACLE 19C NONCDB 迁入CDB的两种方式
随着ORACLE 21c的发布,oracle 21C以后版本数据库将不再支持NONCDB模式,那么 传统的NONCDB如何迁入CDB,就是一个必须面对的问题。
现在看,要把NONCDB迁入,可以有一下几种方式:
1.EXPDP/IMPDP
2.远程克隆
3.使用DBMS_PDB.DESCRIBE方式
4.使用第三方复制软件,比如OGG
由于EXPDP/IMPDP,OGG比较传统,下面我们演示两种12C以来系统提供的两种方式迁入:
环境:
CDB:CDB1
NONCDB:ORCL
版本:
19.20
操作系统:
ORACLE LINUX 8.8
1. 使用DBMS_PDB.DESCRIBE方式迁入CDB,并命名为PDB2
1.1 NONCDB:ORCL设置为只读
ORCL>startup open read only;
1.2 导出ORCL的结构信息
ORCL> EXEC dbms_pdb.describe('/tmp/ORCL.xml');
1.3 cdb1设置OMF
cdb1> alter system set db_create_file_dest='/u01/app/oracle/oradata';
1.4 迁入ORCL,并命名为PDB2
$ CONN sys@cdb1 as sysdba;
cdb1> create pluggable database pdb2
using '/tmp/ORCL.xml';
1.5 登陆到pdb2
$ conn sys@pdb2 as sysdba
1.6 执行NONCDB TO pdb 脚本
pdb2> @?/rdbms/admin/noncdb_to_pdb.sql
1.7 打开PDB2
CDB1>alter pluggable database pdb2 open;
1.8 列出数据库
SYS@cdb1 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
2.远程克隆
通过远程克隆方式实现NONCDB迁入CDB,迁入后,名称修改为PDB_ORCL
2.1. 在NONCDEB 授权给DBLINK链接用户CREATE PLUGGABLE DATABASE权限
orcl> grant create pluggable database to system;
2.2. 在CDB1里面创建链接到NONCDB的DBLINK,名字随意取.
CDB1> CREATE DATABASE LINK link_orcl
connect to system identified by oracle_4U
using 'orcl';
2.3.在CDB1里面创建PDB
CDB1 > create pluggable database pdb_orcl
from NON$CDB@link_orcl;
提示:NON$CDB 不区分大小写
2.4 更新数据字典
CDB1>conn sys/oracle_4U@192.168.133.120:1521/pdb_orcl
pdb_orcl>@?/rdbms/admin/noncdb_to_pdb.sql
2.5 OPEN PDB
CDB1 > ALTER PLUGGABLE DATABASE pdb_orcl open;
SYS@cdb1 >show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB2 READ WRITE NO
4 PDB_ORCL READ WRITE NO