This article describes how Delphix works with production databases that are converted from non-multitenant to multitenant, and the workflow for this operation. Once a dSource is converted to a multitenant PDB, it will be able to share storage blocks with its non-multitenant predecessor, and Delphix will only store the incremental changes to the database. This operation is known as STConvertedToPDBAttach and is only available via CLI.
- Delphix Engine 18.104.22.168 or later.
- Source host with a 11g or 12c non-multitenant source database.
- PDB that is created as a result of converting the above non-multitenant database to multitenant. This PDB can reside on a different host.
- Source host with a CDB that hosts the above PDB.
At the end of the steps below, there should be 2 containers:
- The detached non-MT container which contains all the non-MT snapshots.
- A new container representing the converted PDB and all its subsequent snapshots with the container name as the PDB name. By default the new MT container will have the name of the PDB, or a parameter can be set by the customer to specify its name during attach.
Use these steps to perform this functionality.
- Link the non-multitenant Oracle 11g or 12c source database as a dSource within Delphix. Please note, 11g sources Patch 31220011 included in the July 2020 bundle is needed and XML must be installed to the DB.
- Before performing the conversion to multitenant, detach the dSource and shut it down. Visit the Detach/Re-Attach Oracle dSource article for this step and step 7.
- Convert the non-multitenant database to a PDB following procedures provided in the Oracle documentation. Delphix recommends that the new PDB have the same name as the original non-multitenant database. The new CDB name should be different from the original non-multitenant database.
- Discover the CDB in Delphix Engine if not already present.
- Refresh the environment to make sure the new PDB is discovered.
- If the PDB name has the same name as the non-multitenant then the old non-MT container can be renamed or a parameter to give a different name to the PDB database should be used.
- Attach converted PDB to non-multitenant dSource using CLI (attach-converted-pdb sample script).
Converted PDB Rules BEFORE SnapSync
- Attachment of a converted PDB does not perform automatic SnapSync, even if linkNow=true is used. This is to allow detachment of a converted PDB without negative effects on a non-MT container.
- If for any reason it is necessary to re-convert the PDB (after re-opening to the non-MT database to perform changes), then the converted PDB should be removed instead of detached so that the STConvertedToPDBAttach can be done again to save space.
- Once the converted PDB is removed without performing SnapSync on it, it is possible to attach the non-MT container to its non-MT database.
Converted PDB Detach vs. Delete BEFORE SnapSync
- Detaching a converted PDB will make it possible to attach the non-MT container to its non-MT database.
- However, if the non-MT database is reconverted and regular attach is used to attach the PDB, there will be no space de-duplication since the detach operation reverted the changes as it was before the STConvertedToPDBAttach operation.
- Detach of a converted PDB and subsequent attach should only be performed as long as the PDB has not been re-created/re-plugged to obtain space de-duplication.
- In general a converted PDB should be removed if no SnapSync is taken.
Converted PDB Rules AFTER SnapSync
- Once a SnapSync is taken of a converted PDB, the non-MT container cannot be re-attached to any other container (neither to a non-MT database or to a converted pdb).
- This means that once SnapSync is taken, the non-MT container cannot be used to attach to a converted PDB anymore.
- Even if the converted PDB is removed after taking a SnapSync, attaching to the non-MT container will not be possible as the non-MT container is marked as already converted.
These are all the possible properties that can be configured during the attach of a converted PDB. Of these, only newPdbContainer and force have special meaning for a converted PDB. The rest are 'regular' attachment options.
machine.name database 'DBOMSR' attachSource attachData *> ls Properties type: OracleSTConvertedToPDBAttachData (*) backupLevelEnabled: (unset) bandwidthLimit: (unset) checkLogical: (unset) compressedLinkingEnabled: (unset) config: (required) encryptedLinkingEnabled: (unset) environmentUser: (required) externalFilePath: (unset) filesPerSet: (unset) force: (unset) linkNow: (unset) newPdbContainerName: (unset) numberOfConnections: (unset) operations: (unset) oracleFallbackCredentials: (unset) oracleFallbackUser: (unset) rmanChannels: (unset)
attach-converted-pdb sample script
cd /database select mydatabase attachSource edit attachData set type=OracleSTConvertedToPDBAttachData set newPdbContainerName=<name for the container instead of PDB name> set config=<converted PDB name> edit oracleFallbackCredentials set type=PasswordCredential set password=<database login password> back set oracleFallbackUser=<database login username> set environmentUser=<environment user> commit