Overview

Management of PDBs is fairly simple now.

We can perform several actions with a PDB:

OPEN

Plug & Unplig

Close

Restore / Recover

Clone

Clone in Hot Mode

Configuration Settings

PDBs can be heavily customizable and offer variety of features.

Local / Shared Undo

One key aspect which we need to consider when creating a PDB is whether we want a shared undo or a local undo Shared undo is the default and it was since 12.1. However with Local undo, we can perform clones of the database while transactions are going.

Operations

Open

After we create a CDB, we can to open it, as follows:

Open PDB

That command, will open us a database and it will become available to the users. We can also close a pluggable database as follows:

Close PDB

Unplug a PDB

In 12.1 we could unplug a PDB into .xml file and the migration of the PDB, would be the migration of that XML file AND the relevant database files. From 12.2 we can also unplug the PDB into a .pdb archive file, which contains information about the PDB AND the relevant database files. That will ease our migration.

Unplug to .pdb file

That assumes, you are using OMF file. The resulting file contains all the necessary data:

List .pdb file

Plug a PDB

To plug a database, we need the file from above and we need to verify the compatibility as follows:

Plug a PDB

Create a PDB using the source file

Then we can create a PDB using the .pdb file as follows:

Plug-in PDB

Clone a PDB

We can clone a PDB as follows:

Cloning a PDB

Clone a remote PDB (12.1)

For that feature, you need to be at least: 12.1.0.2, there is a big with 12.1.0.1. Furthermore, there are two varieties of that procedure.

Clone from PDB within other CDB

Clone a non-CDB

For both, there are the following pre-requisites:

Pre-requisites

The user in the local database must have the CREATE PLUGGABLE DATABASE privilege in the root container.

The remote database (PDB or non-CDB) must be open in read-only mode.

The local database must have a database link to the remote database. If the remote database is a PDB, the database link can point to the remote CDB using a common user, or the PDB using a local or common user.

The user in the remote database that the database link connects to must have the CREATE PLUGGABLE DATABASE privilege.

The local and remote databases must have the same endianness, options installed and character sets.

If the remote database uses Transparent Data Encryption (TDE) the local CDB must be configured appropriately before attempting the clone. If not you will be left with a new PDB that will only open in restricted mode.

The default tablespaces for each common user in the remote PDB *must* exist in local CDB. If this is not true, create the missing tablespaces in the root container of the local PDB. If you don't do this your new PDB will only be able to open in restricted mode (Bug 19174942).

When cloning from a non-CDB, both the the local and remote databases must using version 12.1.0.2 or higher.

Clone from a PDB in another CDB

As explained, we need to create a user and open the remote PDB in read only, and create Link in the local one:

On remote

Create a user on remote

Then we can move to the local machine and create the link:

On local

Create link

Clone a non-CDB

Non-CDB in this case, refers to normal database, pre 12c So let's see how it will be done. As before we need to create a user and bring the whole database in read only mode:

On remote

Create user and enable read-only

Then on the local we have to do the same as before:

On local

Create DB Link

Then we can create the PDBs as follows:

Create the PDB

REMEMBER, as the cloned DB wasn't a PDB, we need to run the noncdb_to_pdb.sql.

Cross-Platform PDB Transport

We can perform also cross platform migration of PDB, however there are certain requirements:

COMPATIBLE: Greater or Equal to 12.2

OPEN_MODE: MOUNTED

This action is done either on the source server, when the backup is done, OR on the destination host, when the restore is done.

Backup

We can transform the data either on the source or the destination server. Different situations call for different solutions.

On Source host

Rman backup & Conversion

Bare in mind, as we backup to XML, that WILL NOT SAVE THE DATA, ONLY THE METADATA, you want the data, dump to .pdb file.

On destination host

Rman backup & Conversion

Restore

After we have moved the backup sets and the XML to the destination server. We can start an RMAN session and connect to the target CDB. Also here, depending on where the conversation happened, we have two chocies.

If conversation was on source host

RMAN Restore & Conversion

If conversation was on the destination host

RMAN Restore & Conversation

Hot clone

There is however one BIG flow in that procedure. The problem is that we need the database (non-cdb) or even PDB to be in read-only mode. That pretty much kills all the desire to perform the procedure as the downtime would be too much for production. Because of that from 12.2 we can do a hot clone, which eliminates that prerequisites :)

So let's see how it is done on both:

Clone another PDB

Clone not-CDB

So let's see what we need:

Prerequisites

Prerequisites

Cloning PDB

On remote

On the remote machine, we have to however assure couple stuff:

Create user and verify archivelog

On local

Now, we can create a DB link on the local machine and then we can create the PDB itself :)

Create DB Link

Cloning non-CDB

Again with non-CDB, we can leave the DB open as long as it has the archivelog enabled:

On remote

Verify archivelog & Create user

Then we can go on the local and setup the database there

On local

As before we need to create a link and create the database

Create database link

Then we can create the database:

Create database