0% found this document useful (0 votes)
52 views

Create A Pluggable Database

This document describes how to manually create, unplug, plug, clone, migrate, and delete pluggable databases (PDBs) in an Oracle multitenant container database (CDB). It provides steps to create PDBs, check their status, open them in read/write mode, unplug and plug back a PDB, clone a PDB, migrate a non-CDB to a PDB, and delete PDBs, keeping or dropping associated datafiles.

Uploaded by

Ahmed Nagy
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

Create A Pluggable Database

This document describes how to manually create, unplug, plug, clone, migrate, and delete pluggable databases (PDBs) in an Oracle multitenant container database (CDB). It provides steps to create PDBs, check their status, open them in read/write mode, unplug and plug back a PDB, clone a PDB, migrate a non-CDB to a PDB, and delete PDBs, keeping or dropping associated datafiles.

Uploaded by

Ahmed Nagy
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

Create a Pluggable Database (PDB) Manually

----------------------------------------------
CONN / AS SYSDBA

CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1

FILE_NAME_CONVERT=('/u01/app/oracle/oradata/cdb1/pdbseed/','/u01/app/oracle/oradata
/cdb1/pdb2/');

CONN / AS SYSDBA

ALTER SESSION SET


PDB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/cdb1/pdbseed/','/u01/app/oracle/orad
ata/cdb1/pdb3/';

CREATE PLUGGABLE DATABASE pdb3 ADMIN USER pdb_adm IDENTIFIED BY Password1;

COLUMN pdb_name FORMAT A20

SELECT pdb_name, status


FROM dba_pdbs
ORDER BY pdb_name;

PDB_NAME STATUS
-------------------- -------------
PDB$SEED NORMAL
PDB1 NORMAL
PDB2 NEW
PDB3 NEW

SQL>

SELECT name, open_mode


FROM v$pdbs
ORDER BY name;

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

ALTER PLUGGABLE DATABASE pdb2 OPEN READ WRITE;


ALTER PLUGGABLE DATABASE pdb3 OPEN READ WRITE;

SELECT pdb_name, status


FROM dba_pdbs
ORDER BY pdb_name;

PDB_NAME STATUS
-------------------- -------------
PDB$SEED NORMAL
PDB1 NORMAL
PDB2 NORMAL
PDB3 NORMAL

SQL>
SELECT name, open_mode
FROM v$pdbs
ORDER BY name;

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

Unplug a Pluggable Database (PDB) Manually


------------------------------------------
ALTER PLUGGABLE DATABASE pdb2 CLOSE;
ALTER PLUGGABLE DATABASE pdb2 UNPLUG INTO
'/u01/app/oracle/oradata/cdb1/pdb2/pdb2.xml';

SELECT name, open_mode


FROM v$pdbs
ORDER BY name;

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

DROP PLUGGABLE DATABASE pdb2 KEEP DATAFILES;

SELECT name, open_mode


FROM v$pdbs
ORDER BY name;

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

Plugin a Pluggable Database (PDB) Manually


------------------------------------------

SET SERVEROUTPUT ON
DECLARE
l_result BOOLEAN;
BEGIN
l_result := DBMS_PDB.check_plug_compatibility(
pdb_descr_file => '/u01/app/oracle/oradata/cdb1/pdb2/pdb2.xml',
pdb_name => 'pdb2');

IF l_result THEN
DBMS_OUTPUT.PUT_LINE('compatible');
ELSE
DBMS_OUTPUT.PUT_LINE('incompatible');
END IF;
END;
/
compatible

PL/SQL procedure successfully completed.

CREATE PLUGGABLE DATABASE pdb5 USING '/u01/app/oracle/oradata/cdb1/pdb2/pdb2.xml'

FILE_NAME_CONVERT=('/u01/app/oracle/oradata/cdb1/pdb2/','/u01/app/oracle/oradata/cd
b1/pdb5/');

CREATE PLUGGABLE DATABASE pdb2 USING '/u01/app/oracle/oradata/cdb1/pdb2/pdb2.xml'


NOCOPY
TEMPFILE REUSE;

ALTER PLUGGABLE DATABASE pdb2 OPEN READ WRITE;

SELECT name, open_mode


FROM v$pdbs
ORDER BY name;

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

Clone a Pluggable Database (PDB) Manually


------------------------------------------
ALTER PLUGGABLE DATABASE pdb3 CLOSE;
ALTER PLUGGABLE DATABASE pdb3 OPEN READ ONLY;

CREATE PLUGGABLE DATABASE pdb4 FROM pdb3

FILE_NAME_CONVERT=('/u01/app/oracle/oradata/cdb1/pdb3/','/u01/app/oracle/oradata/cd
b1/pdb4/');

ALTER PLUGGABLE DATABASE pdb4 OPEN READ WRITE;

-- Switch the source PDB back to read/write


ALTER PLUGGABLE DATABASE pdb3 CLOSE;
ALTER PLUGGABLE DATABASE pdb3 OPEN READ WRITE;

CREATE PLUGGABLE DATABASE pdb5 FROM remote_pdb5@remotecdb1

FILE_NAME_CONVERT=('/u01/app/oracle/oradata/cdb1/remote_pdb5/','/u01/app/oracle/ora
data/cdb1/pdb5/');

ALTER PLUGGABLE DATABASE pdb4 OPEN READ WRITE;

Migrate a Non-Container Database (CDB) to a Pluggable Database (PDB)


----------------------------------------------------------------------
Using DBMS_PDB
================
export ORACLE_SID=db12c
sqlplus / as sysdba

SHUTDOWN IMMEDIATE;
STARTUP OPEN READ ONLY;
BEGIN
DBMS_PDB.DESCRIBE(
pdb_descr_file => '/tmp/db12c.xml');
END;
/

export ORACLE_SID=db12c
sqlplus / as sysdba

SHUTDOWN IMMEDIATE;

export ORACLE_SID=cdb1
sqlplus / as sysdba

CREATE PLUGGABLE DATABASE pdb6 USING '/tmp/db12c.xml'


COPY
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/db12c/',
'/u01/app/oracle/oradata/cdb1/pdb6/');

ALTER SESSION SET CONTAINER=pdb6;

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

ALTER SESSION SET CONTAINER=pdb6;


ALTER PLUGGABLE DATABASE OPEN;

SELECT name, open_mode FROM v$pdbs;

NAME OPEN_MODE
------------------------------ ----------
PDB6 READ WRITE

1 row selected.

Delete a Pluggable Database (PDB) Manually


-------------------------------------------
ALTER PLUGGABLE DATABASE pdb2 CLOSE;
DROP PLUGGABLE DATABASE pdb2 KEEP DATAFILES;

ALTER PLUGGABLE DATABASE pdb3 CLOSE;


DROP PLUGGABLE DATABASE pdb3 INCLUDING DATAFILES;

ALTER PLUGGABLE DATABASE pdb4 CLOSE;


DROP PLUGGABLE DATABASE pdb4 INCLUDING DATAFILES;

SELECT name, open_mode


FROM v$pdbs
ORDER BY name;

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

SQL>

You might also like