Managing multiple virtual PDBs in a virtual CDB
Overview
Earlier, only one virtual PDB was supported in a virtual CDB. Starting with Delphix Engine version 8.0.0.0, you can provision multiple vPDBs in a vCDB. This enables you to manage vCDBs and vPDBs independently, when there are more than one vPDB in a vCDB.
This new feature is supported for Oracle versions 12.1.0.2 and later only.
To support multiple vPDBs in a vCDB, Oracle 12.1.0.2 needs an Oracle patch for bug 18967466. Once the patch or update (containing the patch) is installed,
make sure that the appliedPatches
property of the Oracle repository is also updated to include the bug number. Refer to Updating repository for applied patches with the Command Line Interface for instructions.
Managing vCDBs
You can enable/disable, start/stop or delete a vCDB using Actions (...) menu from the Delphix Management application.
Prerequisites
To disable a vCDB, all of its vPDBs must already be disabled using Delphix Management application.
To stop a vCDB, all of its vPDBs must already be stopped or disabled using Delphix Management application.
To delete a vCDB, all of its vPDBs must already be deleted using Delphix Management application.
Procedure
Login to the Delphix Management application.
Navigate to Manage > Datasets.
Select the vCDB you want to manage.
Click Actions (...) menu
Select the desired action for the vCDB.
Managing vPDBs
You can refresh/rewind(undo refresh), enable/disable, start/stop or delete a vPDB using Actions (...) menu from the Delphix Management application.
Prerequisites
To disable a vPDB, its vCDB must be in a running state. You cannot disable a vPDB if its vCDB is in a stopped/disabled state. This is required in the current Delphix Engine version, because in previous versions disable succeeds even if the vCDB is in a stopped/disabled state.
To enable/start a vPDB, if there are multiple vPDBs in its vCDB, then vCDB must have been enabled/started and open in RW mode already. If the vCDB is not enabled/started, enable/start it using Delphix Management application’s Action (...) menu as mentioned in above.
Procedure
Login to the Delphix Management application.
Navigate to Manage > Datasets.
Select the vPDB you want to manage.
Click Actions (...)
Select the desired action for the vPDB.
Make sure to follow the below points, once the desired action is selected.
Refresh/Rewind:
Only one vPDB in a vCDB with source-level parent-child relationship: Both the vPDB and its vCDB will be refreshed/rewound.
The vPDB and its vCDB has a source-level parent-child relationship if the dSource CDB timeflow, from which vCDB timeflow is derived, is the same as the parent CDB timeflow of the dSource PDB timeflow from which vPDB is derived. This was always the case when there was only one vPDB in a vCDB. But with multiple vPDBs support, this may not be always the case, since later vPDB (provisioned to the same vCDB) may be provisioned from a dSource PDB of a different dSource CDB.
Consider the following scenarios:
Provisioning a vPDB (VPDB1) from a dSource PDB (PDB1 in a source CDB1) to a new vCDB (VCDB1) will create a vPDB-vCDB virtual databases with source-level parent-child relationship. If such a vPDB is refreshed/rewound, then both vPDB and its vCDB will be refreshed/rewound.
Provisioning a 2nd vPDB (VPDB2) from another dSource PDB (PDB2 in another source container CDB2) to the same vCDB (VCDB1) will create vPDB-vCDB databases (i.e. VPDB2-VCDB1) that does not have such a relationship. So, if such a vPDB is the only vPDB in the vCDB, then only the vPDB will be refreshed/rewound and not its vCDB.
Only one vPDB in a vCDB with no source-level parent-child relationship: Only the vPDB, on which the action is performed, will be refreshed/rewound. Its vCDB will not be refreshed/rewound. (Refer to the example scenario 2 above.)
Multiple vPDBs in a vCDB: Only the vPDB, on which the action is performed, will be refreshed/rewound.
Disable/Stop:
If there are multiple vPDBs in a vCDB, then the action will be performed only for the vPDB.
If there is only one vPDB in the vCDB, then its vCDB will be also be disabled/stopped after the vPDB is disabled/stopped.
This differs from the previous Delphix Engine(version above 8.0.0.0) behavior which always disabled/stopped the vCDB as well.
Enable/start:
If there are multiple vPDBs in a vCDB, then the action will enable/start the vPDB only.
If there is only one vPDB in the vCDB, then the vCDB will be also be enabled/started if required before enabling/starting the vPDB itself.
Delete
If this is the last vPDB in a vCDB, then the vCDB is also deleted.
If you are deleting a vPDB using the force option, make sure to follow the steps below to clean up the vPDB from the target host:
1. Drop the virtual PDB from the virtual CDB manually after it is deleted from the Delphix Management UI.
2. Remove the virtual PDB mount point from the target host (residing in the mount base directory) to avoid stale mounts.
If a physical PDB is added to a virtual CDB or a virtual PDB from a virtual CDB is deleted using the force option, LogSync will fail with the error "Virtual container database <vCDB Name> has pluggable databases that are not managed by Delphix: <PDB names>."
and/or SnapSync will fail with the error code "exception.oracle.vdb.foreign.pdbs.found.in.vcdb"
. To resolve the errors, unplug the physical PDBs from the virtual CDB manually or drop the virtual PDBs (that were deleted from Delphix using the force option) from the virtual CDB manually.