Customise Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.

No cookies to display.

Unplug and Plug Pluggable Database

Breadcrumb Abstract Shape
Breadcrumb Abstract Shape
Breadcrumb Abstract Shape
Breadcrumb Abstract Shape
Breadcrumb Abstract Shape
Breadcrumb Abstract Shape
  • User AvatarKiran Dalvi
  • 20 Jun, 2021
  • 0 Comments
  • 2 Mins Read

Unplug and Plug Pluggable Database

Unplug and Plug Pluggable Database

We can unplug the pluggable database from existing CDB and Plug it in a different CDB or in the same CDB, depending upon the required. While plugging you can keep the pdb name same as before or can give a different name.

DEMO:
Here we will unplug PDBCD2 pdb and then plug it into the same CDB with different name PDBCD3

Connect to the pluggable database PDBCD2 and close it.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SQL> show pdbs;
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBCDB READ WRITE NO
4 PDBCDB2 READ WRITE NO
SQL>
 
SQL> alter session set container=PDBCDB2;
 
Session altered.
 
SQL> select file_name from dba_data_files;
 
FILE_NAME
--------------------------------------------------------------------------------
/data/app/oracle/oradata/CDB/pdbcdb2/system01.dbf
/data/app/oracle/oradata/CDB/pdbcdb2/sysaux01.dbf
/data/app/oracle/oradata/CDB/pdbcdb2/undotbs01.dbf
/data/app/oracle/oradata/CDB/pdbcdb2/users01.dbf
/data/app/oracle/oradata/CDB/pdbcdb2/users02.dbf
/data/app/oracle/oradata/CDB/pdbcdb2/tbs_perm_pdb.dat
/data/app/oracle/oradata/CDB/pdbcdb2/bigtbs01.dbf
 
SQL> shutdown immediate;
Pluggable Database closed.

Connect to container and unplug pdb to a xml file.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[oracle@localhost orcl_plug]$ sqlplus sys/oracle@prim as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 20 19:44:31 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle. All rights reserved.
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> alter pluggable database PDBCD2 unplug into '/data/orcl_plug.xml';
 
Pluggable database altered.
 
SQL> select pdb_name, status from dba_pdbs;
 
PDB_NAME STATUS
------------------------------ ----------
PDBCDB NORMAL
PDB$SEED NORMAL
PDBCDB2 UNPLUGGED

Now drop the pluggable database

1
2
3
SQL> drop pluggable database PDBCDB2;
 
Pluggable database dropped.

PLUGGING:

Here plug the pdb PDBCDB2 to the Same Container Database

Connect to root container in target database and create pluggable:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[oracle@localhost orcl_plug]$ sqlplus sys/oracle@prim as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 20 19:44:31 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle. All rights reserved.
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL> create pluggable database PDBCDB3 using '/data/orcl_plug.xml' FILE_NAME_CONVERT=('/data/app/oracle/oradata/CDB/PDBCDB2','/data/app/oracle/oradata/CDB/pdbcdb3');
 
Pluggable database created.

Open the PDB:

1
2
3
4
5
6
7
8
9
10
11
SQL> alter pluggable database PDBCDB3 open;
 
Pluggable database altered.
 
SQL> select name, open_mode, total_size from v$pdbs;
 
NAME OPEN_MODE TOTAL_SIZE
------------------------------ ---------- ----------
PDB$SEED READ ONLY 771751936
PDBCDB READ WRITE 978321408
PDBCDB3 READ WRITE 978321408

Plugged the PDB to Different Container

Above steps will be same till unplug the  pluggable database

Drop the PDB pdb_db2 by preserving the datafiles

1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> drop pluggable database pdb_db2 keep datafiles;
 
Pluggable database dropped.
 
SQL> select name, open_mode from v$pdbs;
 
NAME            OPEN_MODE
--------------- ----------
PDB$SEED        READ ONLY
PDB1            READ WRITE
PDB2            READ WRITE
PDB3            READ WRITE
PDB_DB2_NEW     READ WRITE

Run DBMS_PDB.CHECK_PLUG_COMPATIBILITY Function to check compatibility

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SET SERVEROUTPUT ON
DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/u01/pdb_clone/pdb_db2.xml',
pdb_name => 'pdb_db2')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
 
PL/SQL procedure successfully completed.
 
YES

Create pluggable database with nocopy option

1
2
3
SQL> create pluggable database pdb_db2 using '/u01/pdb_clone/pdb_db2.xml' NOCOPY TEMPFILE REUSE;
 
Pluggable database created.