We can create a pluggable database using dblink from a remote location.

Step 1: Check container database

SQL> select name,open_mode,cdb from v$database;

NAME	  OPEN_MODE	       CDB
--------- -------------------- ---
UPDB	  READ WRITE	       YES

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>

Step 2: Connect to a pluggable database you want to clone :

SQL> ALTER SESSION SET CONTAINER=pdb2;

Session altered.

Step 3: Create a user with which you want to clone pdb, you can use existing user too. The user should have created pluggable database privilege.

SQL> CREATE USER ADM IDENTIFIED BY "oracle";

User created.

Step 4: Grant permission if not already done

SQL> GRANT CONNECT,CREATE PLUGGABLE DATABASE TO ADM;

Grant succeeded.

Step 5: Close pluggable database

SQL> ALTER PLUGGABLE DATABASE CLOSE;

Pluggable database altered.

Step 6: Open pluggable database in the read-only state

SQL> ALTER PLUGGABLE DATABASE OPEN READ ONLY;

Pluggable database altered.

Step 7: Connect to destination container database where you want to clone pdb, check details :

SQL> select name,open_mode from v$database;

NAME	  OPEN_MODE
--------- --------------------
DCDB	  READ WRITE

SQL> 
SQL> 
SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 DB				  READ WRITE NO
	 4 APP_SAL			  MOUNTED
	 5 APP_PDB			  READ WRITE NO
	 7 DB1				  MOUNTED
SQL>

Step 8: Create tns entry for source pdb

pdb2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db-d1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb2)
    )
  )

Step 9: Create a database link using tns entry of pdb :

SQL> CREATE DATABASE LINK create_pdb CONNECT TO adm IDENTIFIED BY oracle USING 'pdb2';

Database link created.

Step 10: Check your database link is working properly :

SQL> select 1 from dual@create_pdb;

	 1
----------
	 1

Step 11: Finally, use CREATE PLUGGABLE DATABASE FROM dblink statement to create the pluggable database

SQL> CREATE PLUGGABLE DATABASE dup_pdb2 FROM pdb2@create_pdb;

Pluggable database created.

Step 12: Check pluggable database is created

SQL> show pdbs 

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 DB				  READ WRITE NO
	 4 APP_SAL			  MOUNTED
	 5 APP_PDB			  READ WRITE NO
	 6 DUP_PDB2			  MOUNTED
	 7 DB1				  MOUNTED

Step 13: Open pluggable database

SQL> alter pluggable database dup_pdb2 open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 DB				  READ WRITE NO
	 4 APP_SAL			  MOUNTED
	 5 APP_PDB			  READ WRITE NO
	 6 DUP_PDB2			  READ WRITE NO
	 7 DB1				  MOUNTED
SQL>

Thank you for giving your valuable time to read the above information.

If you want to be updated with all our articles send us an Invitation or Follow us:

Telegram Channel: https://t.me/helporacle

Skant Gupta’s LinkedIn: www.linkedin.com/in/skantali/

Joel Perez’s LinkedIn: Joel Perez’s Profile

LinkedIn Group: Oracle Cloud DBAAS

Facebook Page: OracleHelp

About The Author

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.