This topic describes the process for migrating a TDE-enabled virtual pluggable database (vPDB) or PDB that uses a TDE software keystore to one that uses Oracle Key Vault (OKV). The procedure involves several manual steps, both outside of Delphix and within the Delphix CLI. This process applies to multitenant databases, including CDBs and vCDBs.
-
This procedure includes operations performed outside of Delphix. If any errors or missteps occur during those external operations, Delphix cannot remediate them. It is strongly recommended that a person familiar with Oracle TDE—for example, a database administrator (DBA)—performs these steps.
-
It is recommended to create a full backup of the databases before beginning the conversion.
-
This process is supported only for databases running Oracle version 18 or later.
-
This process applies only to databases configured in united keystore mode. Databases using isolated keystore mode are not supported.
-
All examples in the process assume that the CDB/vCDB is configured for TDE using the wallet_root initialization parameter. If your CDB or vCDB is configured for TDE using the
ENCRYPTION_WALLET_LOCATIONparameter insqlnet.ora, the Oracle commands may differ slightly. Refer to the appropriate Oracle documentation for details on those configuration differences.
Procedure
To migrate a TDE software keystore based vPDB/PDB to OKV enabled vPDB/PDB, follow these steps:
Enroll the CDB/vCDB database as an endpoint of the OKV server
-
Install the OKV client software under the existing
wallet_rootdirectory. For example, if the currentwallet_rootis/work/mycdb, the OKV client software should be installed in/work/mycdb/okv. -
Configure a default wallet for the endpoint on the OKV server (for example,
MY-CDB-WALLET). -
For more information, refer to the Oracle Key Vault documentation on Enrolling and Upgrading Endpoints for Oracle Key Vault.
Migrate software keystore to OKV keystore outside Delphix
-
Follow the OKV documentation Migrating an Existing TDE Wallet to Oracle Key Vault to migrate the existing software keystore to OKV keystore.
-
Upload the software wallet (
ewallet.p12) of the CDB/vCDB to the corresponding OKV endpoint wallet. Example:/work/mycdb/okv/bin/okvutil upload -t wallet -l /work/mycdb/tde -g MY-CDB-WALLET -v 4 -
Set parameter TDE_CONFIGURATION. Example:
ALTER SYSTEM SET TDE_CONFIGURATION = "KEYSTORE_CONFIGURATION=OKV|FILE" SCOPE = BOTH; -
Reconnect to the CDB/vCDB, then migrate the encryption keys to OKV. Example:
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY IDENTIFIED BY "YourOkvEndpointPassword" MIGRATE USING "YourSoftwareWalletPassword" WITH BACKUP; -
Remove or rename the software wallet file
ewallet.p12under$wallet_root/tde. Example:mv /work/mycdb/tde/ewallet.p12 /work/mycdb/tde/ewallet.p12.bak -
Reconnect to the CDB/vCDB, add OKV password to the autologin wallet under
$wallet_root/tde. Example:administer key management add secret 'YourOkvEndpointPassword' for client 'OKV_PASSWORD' to auto_login keystore '/work/mycdb/tde' with backup;
Update CDB/vCDB properties using the CLI
All steps in this section must be performed from the Delphix CLI using the admin user or another user with equivalent administrative privileges.
-
Update the CDB/vCDB property
tdeKeystoreConfigTypefrom FILE to OKV. Example:YourEngine sourceconfig> select MYCDB YourEngine sourceconfig 'MYCDB'> update YourEngine sourceconfig 'MYCDB' update *> set tdeKeystoreConfigType=OKV YourEngine sourceconfig 'MYCDB' update *> commit -
Follow Delphix documentation Manage OKV clients to create a new OKV client for the CDB/vCDB. Example:
YourEngine host oracle okvclient> create YourEngine host oracle okvclient create *> set name=mycdb-okv YourEngine host oracle okvclient create *> set host=myhost YourEngine host oracle okvclient create *> set path=/work/mycdb/okv YourEngine host oracle okvclient create *> set password=YourOkvEndpointPassword YourEngine host oracle okvclient create *> commit -
Set the CDB/vCDB’s
okvClientproperty to the OKV client just created. Example:YourEngine sourceconfig 'MYCDB'> update YourEngine sourceconfig 'MYCDB' update *> set instance.okvClient=mycdb-okv YourEngine sourceconfig 'MYCDB' update *> commit -
Unset
parentTdeKeystorePathfor the vPDBs in the CDB/vCDB.If there is vPDB in the CDB/vCDB, unset its property
parentTdeKeystorePath. Example:YourEngine source 'MYVPDB'> update YourEngine source 'MYVPDB' update *> unset parentTdeKeystorePath YourEngine source 'MYVPDB' update *> commit -
Update
tdeKeyIdentifier.First, connect to the CDB/vCDB using SQL*Plus and run the following query to retrieve the currently activated
key_idfor the CDB/vCDB and all associated vPDBs. Example:SQL> select con_id, key_id from v$encryption_keys order by con_id; CON_ID KEY_ID ---------- ------------------------------------------------------------------------------ 1 06E986A6BCFF2E4FDEBFFA79E5B66D51D2 3 06629CE52EA3674F1BBF2151EAD0E044B2Next, update the
tdeKeyIdentifierproperty for each vPDB in the CDB/vCDB individually. If the container database is a vCDB, update thetdeKeyIdentifierfor the vCDB itself as well. Use thekey_idvalues retrieved from the query above. Example:YourEngine source 'MYVPDB'> update YourEngine source 'MYVPDB' update *> set tdeKeyIdentifier=06629CE52EA3674F1BBF2151EAD0E044B2 YourEngine source 'MYVPDB' update *> commit YourEngine source 'MYCDB'> update YourEngine source 'MYCDB' update *> set tdeKeyIdentifier=06E986A6BCFF2E4FDEBFFA79E5B66D51D2 YourEngine source 'MYCDB' update *> commit -
At this point, the CDB/vCDB and all associated PDBs/vPDBs have been successfully migrated from a software keystore to an OKV keystore.
Supported and unsupported Delphix operations after migration
After a CDB/vCDB and its associated PDBs/vPDBs have been migrated from a software keystore to an OKV keystore, the following Delphix operations are supported and unsupported:
Supported operations
-
The following operations are supported after the migration:
Lifecycle operations for virtual objects (vPDB/vCDB only):
-
Stop
-
Start
-
Disable
-
Enable
-
Delete
For linked PDBs/CDBs, lifecycle operations must be performed outside of Delphix using SQL*Plus.
-
-
Provision a new vPDB from the latest point‑in‑time of the dSource PDB.
-
Refresh a migrated vPDB to the latest point‑in‑time of its parent dSource.
-
Create a new incremental or full snapshot of the migrated PDB/vPDB, and provision a vPDB from any new snapshot created after the migration.
Unsupported operations
The following operations are not supported after the migration:
-
Provisioning a new vPDB using a snapshot of the dSource PDB taken before the migration.
-
Refreshing a migrated vPDB to a snapshot of its parent dSource that was created before the migration.
-
Rewinding a migrated vPDB to a snapshot that was taken before the migration.