Monday, January 27, 2020

Pluge non-cdb into CDB as PDB



[oracle@db19c noncdb]$ export ORACLE_SID=noncdb
[oracle@db19c noncdb]$ sqlplus / as sysdba

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup open read only;
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size                  8628936 bytes
Variable Size             373294392 bytes
Database Buffers          687865856 bytes
Redo Buffers                3952640 bytes
Database mounted.
Database opened.
SQL>
SQL> BEGIN
  DBMS_PDB.DESCRIBE(
    pdb_descr_file => '/tmp/noncdb.xml');
END;
/  2    3    4    5

PL/SQL procedure successfully completed.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

[oracle@db19c noncdb]$
[oracle@db19c noncdb]$ export ORACLE_SID=cdb1
[oracle@db19c noncdb]$
[oracle@db19c noncdb]$ sqlplus / as sysdba

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> SET SERVEROUTPUT ON
DECLARE
  l_result BOOLEAN;
BEGIN
  l_result := DBMS_PDB.check_plug_compatibility(
                pdb_descr_file => '/tmp/noncdb.xml',
                pdb_name       => 'pdb2');

  IF l_result THEN
    DBMS_OUTPUT.PUT_LINE('compatible');
  ELSE
    DBMS_OUTPUT.PUT_LINE('incompatible');
  END IF;
END;
/SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14
compatible

PL/SQL procedure successfully completed.

SQL>
SQL> CREATE PLUGGABLE DATABASE pdb2 USING '/tmp/noncdb.xml'
  2  COPY
  3  FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/noncdb/', '/u01/app/oracle/oradata/cdb/cdb1/pdb2/');

Pluggable database created.

SQL> col name for a20
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ----------
PDB$SEED             READ ONLY
PDB1                 READ WRITE
PDB2                 MOUNTED

SQL> ALTER SESSION SET CONTAINER=pdb2;

Session altered.

SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ----------
PDB2                 MOUNTED

1 row selected.

SQL> ALTER PLUGGABLE DATABASE OPEN;

Pluggable database altered.

SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ----------
PDB2                 READ WRITE

1 row selected.

SQL>

No comments:

Post a Comment