During relocation, the source PDB can be open in read/write mode and fully functional.
PDB relocation executes an online block level copy of the source PDB data files, redo, and undo while the source PDB is open with active sessions. When the target PDB comes online because of an ALTER PLUGGABLE DATABASE OPEN
statement, Oracle Database terminates the active sessions and closes the source PDB.
When the target PDB is an application PDB or application root, you have the following options:
- You can relocate a PDB into an application container as an application PDB. The target PDB can be in the same CDB or a different CDB.
- You can relocate an application PDB from one application root to another. The target PDB must be in a different CDB.
- You can relocate an empty application root from one CDB to another, but the application root must not have any hosted application PDBs.
When you open the relocated PDB for the first time, Oracle Database drains active sessions on the source PDB and redirects client connections to the relocated PDB services. Opening the relocated PDB initiates the shutdown of the original source PDB. The source and relocated PDBs are never open at the same time.
Relocating a PDB: Examples
The examples in this section demonstration relocation using SQL and DBCA.
Relocating a PDB from a Remote CDB
This example relocates a PDB named pdb1
from a remote CDB to the current CDB.
In this example, the root to which the new PDB belongs depends on the current container when the CREATE PLUGGABLE DATABASE
statement is run:
- When the current container is the CDB root, the new PDB is created in the CDB root.
- When the current container is an application root in an application container, the new PDB is created as an application PDB in the application root.
This example relocates a PDB named pdb1
from a remote CDB given different factors. This example assumes the following factors:
- The current user has the
CREATE PLUGGABLE DATABASE
system privilege in the root of the target CDB. - The database link name to the source CDB is
lnk2src
. This database link was created with the following SQL statement:
CREATE PUBLIC DATABASE LINK lnk2src CONNECT TO c##myadmin IDENTIFIED BY
password USING 'MYCDB';
The common user c##myadmin
has SYSOPER
administrative privilege and CREATE PLUGGABLE DATABASE
system privilege in the source CDB.
- The
PATH_PREFIX
clause is not required. - The
FILE_NAME_CONVERT
clause and theCREATE_FILE_DEST
clause are not required.
Either Oracle Managed Files is enabled, or the PDB_FILE_NAME_CONVERT
initialization parameter is set. The files will be moved to a new location based on the Oracle Managed Files configuration or the initialization parameter setting.
- Storage limits are not required for the PDB. Therefore, the
STORAGE
clause is not required. - There is no file with the same name as the new temp file that will be created in the target location. Therefore, the
TEMPFILE REUSE
clause is not required. - Connections should be relocated automatically from the source PDB to the relocated PDB. Therefore, the
AVAILABILITY MAX
clause is included.
The following statement relocates the pdb1
PDB from the source CDB to the current CDB:
CREATE PLUGGABLE DATABASE pdb1 FROM [email protected] RELOCATE AVAILABILITY MAX;
Relocating a PDB Using DBCA: Example
This example uses DBCA to relocate a PDB named pdb1
from a remote CDB to the local CDB, where it will be renamed relpdb1
.
This following silent command relocates rempdb1
to loccdb1
:
./dbca -silent
-relocatePDB
-sourceDB
remcdb1
-remotePDBName
rempdb1
-remoteDBConnString
remcdb1host:1521/reminst
-remoteDBSYSDBAUserName
remSYS
-remoteDBSYSDBAUserPassword
remsyspwd
-dbLinkUsername
c##adminuser_remcdb1
-dbLinkUserPassword
pwd4dblinkusr
-sysDBAUserName
locSYS
-sysDBAPassword
locsyspwd
-pdbName
relpdb1