Non-CDB Oracle Database To a PDB on a CDB(19C)
阿新 • • 發佈:2021-01-17
一、前提:
1.源庫和目標庫執行的主機版本一致。
Red Hat Enterprise Linux Server release 7.8 (Maipo)
2.資料庫版本保持一致。(19C)
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
3.資料庫檔案目錄需要保持一致。
Notes:如果資料檔案必須被拷貝至不同目錄,例如ASM盤;只需要在create pluggable database時設定引數 SOURCE_FILE_NAME_CONVERT
官方文件對source_file_name_convert的說明:
Specify this clause only if the contents of the XML file do not accurately describe the locations of the source files. If the files that must be used to plug in the source database are no longer in the location specified in the XML file, then use this clause to map the specified file names to the actual file names.
二、遷移步驟:
1、Non-CDB open to read_only model in the source database
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 629144664 bytes Fixed Size 8899672 bytes Variable Size 184549376 bytes Database Buffers 432013312 bytes Redo Buffers 3682304 bytes Database mounted. SQL> alter database open read only; Database altered.
2、Non-CDB Create the XML file for the PDB in the source database
SQL> exec DBMS_PDB.DESCRIBE('/home/oracle/orclpdb.xml');
PL/SQL procedure successfully completed.
-rw-r--r-- 1 oracle oinstall 6.6K Jan 17 16:22 orclpdb.xml
oracle@19c:/home/oracle$ pwd
/home/oracle
--orclpdb.xml內容
oracle@19c:/home/oracle$ cat orclpdb.xml
<?xml version="1.0" encoding="UTF-8"?>
<PDB>
<xmlversion>1</xmlversion>
<pdbname>orcl</pdbname>
<cid>0</cid>
<byteorder>1</byteorder>
<vsn>318767104</vsn>
<vsns>
<vsnnum>19.0.0.0.0</vsnnum>
<cdbcompt>19.0.0.0.0</cdbcompt>
<pdbcompt>19.0.0.0.0</pdbcompt>
<vsnlibnum>0.0.0.0.24</vsnlibnum>
<vsnsql>24</vsnsql>
<vsnbsv>8.0.0.0.0</vsnbsv>
</vsns>
<dbid>1589865411</dbid>
<ncdb2pdb>1</ncdb2pdb>
<cdbid>1589865411</cdbid>
<guid>B91497A16ECE34FEE053C838A8C0F823</guid>
<uscnbas>2039590</uscnbas>
<uscnwrp>0</uscnwrp>
<undoscn>9</undoscn>
<rdba>4194824</rdba>
<tablespace>
<name>SYSTEM</name>
<type>0</type>
<tsn>0</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/ORCL/system01.dbf</path>
<afn>1</afn>
<rfn>1</rfn>
<createscnbas>9</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>115200</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>1589865411</fdbid>
<fcpsb>2039589</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1062084677</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>1280</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>SYSAUX</name>
<type>0</type>
<tsn>1</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/ORCL/sysaux01.dbf</path>
<afn>3</afn>
<rfn>3</rfn>
<createscnbas>5480</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>66560</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>1589865411</fdbid>
<fcpsb>2039589</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1062084677</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>1280</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>UNDOTBS1</name>
<type>2</type>
<tsn>2</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/ORCL/undotbs01.dbf</path>
<afn>4</afn>
<rfn>4</rfn>
<createscnbas>1920446</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>42880</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>1589865411</fdbid>
<fcpsb>2039589</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1062084677</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>640</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>TEMP</name>
<type>1</type>
<tsn>3</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>128</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/ORCL/temp01.dbf</path>
<afn>1</afn>
<rfn>1</rfn>
<createscnbas>1921094</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>4096</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>80</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>USERS</name>
<type>0</type>
<tsn>4</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/ORCL/users01.dbf</path>
<afn>7</afn>
<rfn>7</rfn>
<createscnbas>32876</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>640</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>1589865411</fdbid>
<fcpsb>2039589</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1062084677</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>160</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<recover>0</recover>
<optional>
<ncdb2pdb>1</ncdb2pdb>
<csid>873</csid>
<ncsid>2000</ncsid>
<options>
<option>APS=19.0.0.0.0</option>
<option>CATALOG=19.0.0.0.0</option>
<option>CATJAVA=19.0.0.0.0</option>
<option>CATPROC=19.0.0.0.0</option>
<option>CONTEXT=19.0.0.0.0</option>
<option>DV=19.0.0.0.0</option>
<option>JAVAVM=19.0.0.0.0</option>
<option>OLS=19.0.0.0.0</option>
<option>ORDIM=19.0.0.0.0</option>
<option>OWM=19.0.0.0.0</option>
<option>SDO=19.0.0.0.0</option>
<option>XDB=19.0.0.0.0</option>
<option>XML=19.0.0.0.0</option>
<option>XOQ=19.0.0.0.0</option>
</options>
<olsoid>0</olsoid>
<dv>0</dv>
<APEX>NULL</APEX>
<parameters>
<parameter>processes=300</parameter>
<parameter>nls_language='AMERICAN'</parameter>
<parameter>nls_territory='AMERICA'</parameter>
<parameter>sga_target=629145600</parameter>
<parameter>db_block_size=8192</parameter>
<parameter>compatible='19.0.0'</parameter>
<parameter>open_cursors=300</parameter>
<parameter>pga_aggregate_target=209715200</parameter>
</parameters>
<sqlpatches>
<sqlpatch>19.3.0.0.0 Release_Update 1904101227 (RU): APPLY SUCCESS</sqlpatch>
</sqlpatches>
<tzvers>
<tzver>primary version:32</tzver>
<tzver>secondary version:0</tzver>
</tzvers>
<walletkey>0</walletkey>
<services>
<service>SYS$BACKGROUND,</service>
<service>SYS$USERS,</service>
<service>orclXDB,orclXDB</service>
<service>orcl,orcl</service>
</services>
<opatches/>
<hasclob>1</hasclob>
<awr/>
<hardvsnchk>0</hardvsnchk>
<localundo>1</localundo>
<apps/>
<dbedition>8</dbedition>
<dvopsctl>2</dvopsctl>
<clnupsrcpal>1</clnupsrcpal>
</optional>
</PDB>
3、Shutdown the Non-CDB database in the source database
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4、Change directory to the new Oracle home,Run the DBMS_PDB.CHECK_PLUG_COMPATIBILITY function in the target database
--If the output is YES, then the PDB is compatible
set serveroutput on
DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/home/oracle/orclpdb.xml',
pdb_name => 'ORCLPDB')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
12 /
YES
PL/SQL procedure successfully completed.
5、Plug Non-CDB database to PDB in the target database
SQL> create pluggable database orclpdb using '/home/oracle/orclpdb.xml' nocopy tempfile reuse;
Pluggable database created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED
4 ORCLPDB MOUNTED
5 PDB02 MOUNTED
6 PDB03 MOUNTED
6、Run the noncdb_to_pdb.sql script in the target database
SQL> alter session set container=ORCLPDB;
Session altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 ORCLPDB MOUNTED
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
--由於內容過多,已省略
7、open orclpdb in the target database
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED
4 ORCLPDB MOUNTED
5 PDB02 MOUNTED
6 PDB03 MOUNTED
SQL> alter pluggable database ORCLPDB open;
Pluggable database altered.
SQL> alter session set container=ORCLPDB;
Session altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 ORCLPDB READ WRITE NO