Goal: CREATE NEW PLUGGABLE DATABASE (PDB2) BY CLONING AN EXISTING PLUGGABLE DATABASE (PDB1)
Contents
___________________________________________________________________________________________________
1. Pre-requisites
2. Close existing PLUGGABLE DATABASE PDB1
3. Open existing PLUGGABLE DATABASE PDB1 in Read-Only
4. Create new directory at OS level
5. CREATE NEW PDB (PDB2) BY CLONING AN EXISTING PDB (PDB1)
6. OPEN NEW PLUGGABLE DATABASE PDB2
7. Close existing PLUGGABLE DATABASE PDB1 FROM RO MODE
8. Open existing PLUGGABLE DATABASE PDB1 in RW MODE
9. Verification
___________________________________________________________________________________________________
SQL> select name,open_mode,con_id from v$database; NAME OPEN_MODE CON_ID -------------------- -------------------- ---------- CDB2 READ WRITE 0 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 PDB1 READ WRITE NO <--- SQL> SQL> col name for a60 SQL> select name from v$datafile where con_id=3; NAME ------------------------------------------------------------ /home/oracle/oradata/PDB1system01.dbf /home/oracle/oradata/PDB1sysaux01.dbf /home/oracle/oradata/PDB1undotbs01.dbf /home/oracle/oradata/PDB1/pdb1_users01.dbf SQL> select name from v$tempfile where con_id=3; NAME ------------------------------------------------------------ /home/oracle/oradata/PDB1temp01.dbf
2. Close existing PLUGGABLE DATABASE PDB1
SQL> alter pluggable database PDB1 close immediate;
Pluggable database altered.
SQL>
3. Open existing PLUGGABLE DATABASE PDB1 in Read-Only
SQL> alter pluggable database PDB1 open read only; Pluggable database altered. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ ONLY NO <---- SQL>
4. Create new directory at OS level
SQL> !mkdir -p /home/oracle/oradata/PDB2
5. CREATE NEW PDB (PDB2) BY CLONING AN EXISTING PDB (PDB1)
SQL> CREATE PLUGGABLE DATABASE PDB2 FROM PDB1 FILE_NAME_CONVERT=('/home/oracle/oradata/PDB1','/home/oracle/oradata/PDB2/'); Pluggable database created. <----- SQL> SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ ONLY NO 4 PDB2 MOUNTED <----- SQL>
6. OPEN NEW PLUGGABLE DATABASE PDB2
SQL> alter pluggable database PDB2 open;
Pluggable database altered.
SQL>
7. Close existing PLUGGABLE DATABASE PDB1 FROM RO MODE
SQL> alter pluggable database PDB1 close immediate;
Pluggable database altered.
SQL>
8. Open existing PLUGGABLE DATABASE PDB1 in RW MODE
SQL> alter pluggable database PDB1 open;
Pluggable database altered.
SQL>
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 READ WRITE NO <---- SQL> select name from v$datafile where con_id=4; NAME ------------------------------------------------------------ /home/oracle/oradata/PDB2/system01.dbf /home/oracle/oradata/PDB2/sysaux01.dbf /home/oracle/oradata/PDB2/undotbs01.dbf /home/oracle/oradata/PDB2/pdb1_users01.dbf SQL> select name from v$tempfile where con_id=4; NAME ------------------------------------------------------------ /home/oracle/oradata/PDB2/temp01.dbf SQL>
Caution: Your use of any information or materials on this website is entirely at your own risk. It is provided for educational purposes only. It has been tested internally, however, we do not guarantee that it will work for you. Ensure that you run it in your test environment before using.