Plugin an Oracle 12c non-CDB database to an Oracle 12c Container Database (CDB)
PS. This non-CDB database is an Oracle 12g database upgraded from Oracle 11gR2 using DBUA (Database Upgrade Assistant) in the same machine.
PS. This non-CDB database is an Oracle 12g database upgraded from Oracle 11gR2 using DBUA (Database Upgrade Assistant) in the same machine.
1. Restart the non-CDB database (TESTDB) in READ-ONLY mode
[oracle@testsvr ~]$ . oraenv
ORACLE_SID = [TESTDB] ?
The Oracle base remains unchanged with value /oracle/orabase
SQL> sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount
SQL> alter database open read only;
SQL> col open_mode format a20
SQL> col name format a20
SQL> select name,open_mode
from v$database;
>>
NAME OPEN_MODE
-------------------- --------------------
TESTDB READ ONLY
-------------------- --------------------
TESTDB READ ONLY
2. Generating an XML file containing the metadata which describes the non-CDB using DBMS_PDB.DESCRIBE package.
SQL> exec DBMS_PDB.DESCRIBE(pdb_descr_file => '/home/oracle/TESTDB.xml');
SQL> exec DBMS_PDB.DESCRIBE(pdb_descr_file => '/home/oracle/TESTDB.xml');
3. Connect to the CDB and run the DBMS_PDB.CHECK_PLUG_COMPATIBILITY package to check if the non-CDB (TESTDB) is now ready for conversion into a Pluggable Database.
[oracle@testsvr ~]$ . oraenv
ORACLE_SID = [my12c] ?
The Oracle base remains unchanged with value /oracle/orabase
CDB$ROOT@MY12C> show con_name
CON_NAME
------------------------------
CDB$ROOT
CON_NAME
------------------------------
CDB$ROOT
set serveroutput on
declare
v_compatible BOOLEAN default FALSE;
begin
v_compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/home/oracle/TESTDB.xml',pdb_name => 'TESTDB');
if v_compatible then
dbms_output.put_line('=> YES');
else
dbms_output.put_line('=> NO');
end if;
end;
/
=> YES
v_compatible BOOLEAN default FALSE;
begin
v_compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/home/oracle/TESTDB.xml',pdb_name => 'TESTDB');
if v_compatible then
dbms_output.put_line('=> YES');
else
dbms_output.put_line('=> NO');
end if;
end;
/
=> YES
4. Plug the non-CDB (TESTDB) into the CDB
SQL> CREATE PLUGGABLE DATABASE TESTDB using '/home/oracle/TESTDB.xml' nocopy tempfile reuse;
Pluggable database created.
col con_id format 999
col name format a20
col open_mode format a20
select con_id,name,open_mode
from v$pdbs;
>>
CON_ID NAME OPEN_MODE
------ -------------------- --------------------
2 PDB$SEED READ ONLY
3 PDBMY12C READ WRITE
4 MYPDB READ WRITE
5 TESTDB MOUNTED
col pdb_name format a20
select pdb_name,dbid,con_id,status
from cdb_pdbs;
>>
PDB_NAME DBID CON_ID STATUS
-------------------- ---------- ------ ---------------------------
PDBMY12C 2146342917 3 NORMAL
PDB$SEED 3124979218 2 NORMAL
MYPDB 3203928949 4 NORMAL
TESTDB 1801614260 5 NEW
select pdb_name,dbid,con_id,status
from cdb_pdbs;
>>
PDB_NAME DBID CON_ID STATUS
-------------------- ---------- ------ ---------------------------
PDBMY12C 2146342917 3 NORMAL
PDB$SEED 3124979218 2 NORMAL
MYPDB 3203928949 4 NORMAL
TESTDB 1801614260 5 NEW
SQL> ALTER SESSION SET CONTAINER = TESTDB;
SQL> show con_name
CON_NAME
------------------------------
TESTDB
SQL> show con_name
CON_NAME
------------------------------
TESTDB
5. Run the PDB convertion script - noncdb_to_pdb.sql
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
6. Open the new converted PDB in OPEN mode
SQL> alter database open;
SQL> alter database open;
SQL> alter session set CONTAINER = CDB$ROOT;
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> col pdb_name format a20
SQL> select pdb_name,dbid,con_id,status
from cdb_pdbs;
SQL> select pdb_name,dbid,con_id,status
from cdb_pdbs;
>>
PDB_NAME DBID CON_ID STATUS
-------------------- ---------- ---------- ---------------------------
PDBMY12C 2146342917 3 NORMAL
PDB$SEED 3124979218 2 NORMAL
MYPDB 3203928949 4 NORMAL
TESTDB 1801614260 5 NORMAL
PDB_NAME DBID CON_ID STATUS
-------------------- ---------- ---------- ---------------------------
PDBMY12C 2146342917 3 NORMAL
PDB$SEED 3124979218 2 NORMAL
MYPDB 3203928949 4 NORMAL
TESTDB 1801614260 5 NORMAL
7. You can now shutdown, remove the pre-existing Non-CDB database service, and then delete the Non-CDB database entry from /etc/oratab
[oracle@testsvr admin]$ srvctl stop database -d TESTDB
[oracle@testsvr admin]$ srvctl remove database -d TESTDB
[oracle@testsvr admin]$ ps -ef |grep pmon
[oracle@testsvr admin]$ srvctl remove database -d TESTDB
[oracle@testsvr admin]$ ps -ef |grep pmon
oracle 6256 1 0 10:11 ? 00:00:00 ora_pmon_my12c
grid 6431 1 0 Jan08 ? 00:00:00 asm_pmon_+ASM
oracle 24679 7306 0 15:14 pts/0 00:00:00 grep pmon
文章標籤
全站熱搜
