Oracle ZDM 26.1 即时部署:使用 Oracle Key Vault (OKV) 进行端到端物理 PDB 克隆
简介
Oracle Zero Downtime Migration (ZDM) 26.1 引入了即时部署功能,可直接从源或目标数据库主机进行数据库迁移,而无需使用专用 ZDM 服务器。此发行版还增强了与 Oracle Key Vault (OKV) 的集成,并改进了透明数据加密 (Transparent Data Encryption,TDE) wallet 迁移功能。
早期 ZDM 发行版的限制
在 Oracle ZDM 26.1 之前:
- 即时部署不可用。数据库迁移需要专用 ZDM 服务器安装和生命周期管理。
- 不支持自动迁移 Oracle Key Vault (OKV) 外部密钥库 wallet。当源或目标数据库使用 OKV 外部密钥库时,必须手动执行 TDE wallet 迁移和密钥管理。
ZDM 新增功能 26.1
- 当源或目标数据库配置为使用 Oracle Key Vault (OKV) 外部密钥库时,ZDM 26.1 会自动迁移外部密钥库 wallet。
ZDM 26.1 支持以下 wallet 迁移方案:
- 具有 OKV wallet 的源数据库到具有 OKV wallet 的目标数据库
- 具有 OKV wallet 的源数据库到具有基于文件的 wallet 的目标数据库
- 具有基于文件的 wallet 的源数据库到具有 OKV wallet 的目标数据库
- 具有基于文件的 wallet 的源数据库到具有基于文件的 wallet 的目标数据库
ZDM 26.1 检测源数据库是否配置为使用 OKV wallet,并在将 TDE 密钥迁移到目标数据库之前下载 TDE 密钥。如果目标数据库还配置了 OKV wallet,则 ZDM 会将迁移的 TDE 密钥上载到目标 OKV wallet。将 ZDM_SKIP_TDE_WALLET_MIGRATION 参数保留为默认值 (FALSE),以允许 ZDM 在迁移工作流期间自动迁移 TDE wallet。

目标
-
利用 ZDM 26.1 即时部署,无需专用 ZDM 服务器。
-
在源数据库和目标数据库上使用 Oracle Key Vault (OKV) 进行集中式 TDE 密钥管理。
-
消除手动 TDE wallet 和加密密钥迁移活动。
-
使用 ZDM 26.1 PDB 克隆功能演示启用 TDE 的 PDB 的端到端迁移。
-
使用 ZDM 26.1 中基于数据库链接的迁移方法创建可刷新的 PDB 克隆。
版本兼容性
本教程演示了 Oracle Zero Downtime Migration (ZDM) 26.1 Instant Deploy 以及 Oracle AI Database 26ai 和 Oracle Key Vault (OKV) 21.14 ,以实现端到端物理 PDB 克隆和自动 TDE wallet 迁移。
本教程中的主要工作流已使用以下项进行验证:
- Oracle AI Database 26ai(版本 23.26 或更高版本)
- Oracle Zero Downtime Migration (ZDM) 26.1
- Oracle Key Vault (OKV) 21.14
注:本教程中的某些部分仅适用于早期的 Oracle Database 发行版,以供参考。这些部分明确标记为 12.1 Only 或 18c and 19c Only ,在使用 Oracle AI Database 26ai 时可以跳过这些部分。
迁移前的当前环境
在启动 Oracle Zero Downtime Migration (ZDM) 工作流之前,验证是否已为物理 PDB 克隆正确配置源环境和目标环境。下表汇总了本教程中使用的环境以及迁移前关键组件的状态。

Prerequisites
注:在开始本教程之前,请确保您的环境满足所有 Oracle Zero Downtime Migration (ZDM) 26.1 先决条件。有关先决条件的完整列表,请参阅 Oracle ZDM 文档中的准备数据库迁移部分:
https://docs.oracle.com/en/database/oracle/zero-downtime-migration/26.1/zdmug/preparing-for-database-migration.html#GUID-25B07C59-8143-41CB-B431-3D9225CCFDD6
设置 Oracle Zero Downtime Migration (ZDM) 26.1 即时部署
- Instant Deploy 是一个轻量级、可下载的软件包,可让您直接运行零停机迁移 (ZDM),而无需安装或维护单独的 ZDM 服务器。
- 您可以使用与标准 ZDM 相同的 zdmcli 命令和用户体验,但无需安装或启动持久性服务。
- CLI 将启动迁移并提供实时进度更新。
- 可以在要迁移的同一数据库主机中运行 ZDM 即时部署工具。
- 通过即时部署功能,Oracle 只需满足极少的基础设施要求,即可为您简化数据库迁移。
环境
出于演示目的,本教程使用 OCI Oracle Base Database Service 和 Oracle AI Database 26ai,版本 23.26.2.0.0。
源:hostname:sourcedb,DB name:ORADB,DB unique name:ORADB_src TDE 由 Oracle Key Vault (OKV) 管理。

目标:hostname:targetdb,DB name:ORADB,DB unique name:ORADB_tgt TDE 使用基于文件的 wallet。

迁移工作流
步骤 1:从 Oracle ZDM 产品页面(版本 26.1)下载最新的 Oracle Zero Downtime Migration (ZDM) 26.1 发行版。
从 Oracle Zero Downtime Migration 下载页面下载最新的 Oracle Zero Downtime Migration (ZDM) 26.1 软件。该软件通过 Oracle Software Delivery Cloud (OSDC) 分发。使用 Oracle 单点登录 (SSO) 账户登录,接受许可协议,然后下载最新的 ZDM 发行版软件包(例如 V1055491-01.zip)。有关最新的下载和文档,请参阅以下资源:
Oracle Zero Downtime Migration Download:
https://www.oracle.com/database/technologies/rac/zdm-downloads.html
Oracle Zero Downtime Migration 26.1 Documentation:
https://docs.oracle.com/en/database/oracle/zero-downtime-migration/26.1/index.html
步骤 2:将 V1055491-01.zip 文件复制到具有足够空闲存储的目录。
下载软件后,将 ZIP 归档文件复制到源数据库主机(如果计划从目标使用 Instant Deploy,则为目标主机)并在下一步中继续提取。

提取 ZIP 文件将创建 zdm26.1 子目录。提取的 ZDM 软件位于 /opt/opc/zdm/zdm26.1 中。
步骤 3:使用另一主机的名称和 IP 地址更新每台主机上的 /etc/hosts 文件。
将源主机名和 IP 信息添加到目标主机的 /etc/hosts 文件。

将目标主机名和 IP 信息添加到源主机的 /etc/hosts 文件中。

步骤 4:复制源主机上 OS 用户的 SSH 公共密钥(在本例中为 opc),并将其添加到目标主机上 OS 用户(在本例中为 opc)的 authorized_keys 文件中。
在源主机上

在目标主机上

测试从源到目标数据库主机的 SSH 连接:

验证是否为 SSH 权限用户禁用了 TTY。如果禁用了 TTY,则以下命令将返回远程主机中没有任何错误的日期:

步骤 5:验证源数据库上的 TDE 是否由 Oracle Key Vault (OKV) 管理。

步骤 6:为目标数据库配置 Oracle Key Vault (OKV)。
1:将目标数据库注册为 Oracle Key Vault (OKV) 端点。


2:复制 Oracle Key Vault (OKV) 注册令牌。

3:注册目标数据库端点并下载 Oracle Key Vault (OKV) 端点软件。

4:在目标主机上为 OKV 创建必要的目录:

5:安装 Oracle Key Vault 端点 JAR 文件:

6:将源虚拟 wallet 分配给目标端点:

7:将当前 Wallet 上载到 Oracle Key Vault (OKV)(从基于文件的 Wallet 迁移到 OKV):
验证与 OKV 的连接后,将当前 wallet 上载到 OKV。要验证当前 WALLET_ROOT 位置,请运行以下查询:

标识 wallet 位置后,将现有 wallet 复制到 WALLET_ROOT/tde:

复制完成后,使用 WALLET_ROOT/okv/bin/okvutil 将钱包存储在 WALLET_ROOT/tde 中的钱包上载到 OKV:

8:将 OKV 密码添加到密钥库以启用自动登录到 OKV 密钥库。(运行所有节点):

9:添加密钥以使用外部存储(在所有节点上运行):

10:更新数据库初始化参数:
更新 OKV 使用的 wallet_root 和 tde_configuration 初始化参数。请注意,tde_configuration 初始化参数取决于 wallet_root 参数。由于 wallet_root 参数具有 SPFILE 范围,因此需要重新启动数据库才能使更改生效。
此外,设置 wallet_root 和 tde_configuration 会覆盖 sqlnet.ora 中的 ENCRYPTION_WALLET_LOCATION 设置。
更新数据库初始化参数之前,请执行 spfile 的备份。

11:sqlnet.ora 和 RAC 数据库环境设置(仅 12.1):
由于 wallet_root 和 tde_configuration init.ora 参数在 12.1 中不存在,因此我们需要在 sqlnet.ora 和 RAC 数据库环境设置中进行更改。
Sqlnet.ora:
Change only the method under the ENCRYPTION_WALLET_LOCATION entry to HSM:
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=HSM)
(METHOD_DATA=(DIRECTORY=/var/opt/oracle/dbaas_acfs/DBNAME/tde_wallet)))
RAC 数据库环境设置:将 ORACLE_BASE 和 ORACLE_UNQNAME 环境变量添加到 RAC 数据库环境设置:
[opc@targetdb ~]$ srvctl getenv database -d DBNAMEUNIQUE
DBNAMEUNIQUE:
TNS_ADMIN=/u02/app/oracle/product/12.1.0/dbhome_1/network/admin/DBNAME
bash-3.2$ srvctl setenv database -d DBNAMEUNIQUE -T "ORACLE_BASE=/u02/app/oracle"
bash-3.2$ srvctl setenv database -d DBNAMEUNIQUE -T "ORACLE_UNQNAME=DBNAMEUNIQUE"
bash-3.2$ srvctl getenv database -d DBNAMEUNIQUE
12:重新开始数据库。
[opc@targetdb ~]$ srvctl stop database -d DBNAMEUNIQUE
[opc@targetdb ~]$ srvctl start database -d DBNAMEUNIQUE
13:将 TDE 密钥库迁移到 Oracle Key Vault (OKV)。
在一个数据库节点上运行以下命令以将 TDE 软件密钥库迁移到 Oracle Key Vault (OKV)。
SQL>ADMINISTER KEY MANAGEMENT set key identified by "<OKV-pwd>" force keystore migrate using "TDE-wallet-password";

命令成功返回后,重新启动数据库以验证与 Oracle Key Vault 的通信是否正常运行:
[opc@targetdb ~]$ srvctl stop database -d DBNAMEUNIQUE
[opc@targetdb ~]$ srvctl start database -d DBNAMEUNIQUE
14:验证 Oracle Key Vault (OKV) 配置
运行以下查询以验证是否正确配置了 Oracle Key Vault (OKV) 配置,以及数据库是否可以访问外部密钥库。

步骤 7:在源数据库主机上创建 ZDM 响应文件。此文件定义迁移配置,包括源和目标数据库信息、Oracle Key Vault (OKV) 参数以及物理 PDB 克隆设置。
以下示例显示了用于此迁移的响应文件:
[opc@sourcedb ~]$ more /opt/opc/zdm/zdm26.1/template/26.1.0/zdm_physical_PDB_Cloning.rsp
ZDM_SRC_DB_OKV_HOME=/u01/app/oracle/admin/ORADB_src/okv_home/okv
ZDM_TGT_DB_OKV_HOME=/u01/app/oracle/admin/ORADB_tgt/okv_home/okv
ZDM_SRC_DB_OKV_VIRTUAL_WALLET_NAME=sourcedbwallet
ZDM_TGT_DB_OKV_VIRTUAL_WALLET_NAME=sourcedbwallet
ZDM_SKIP_TDE_WALLET_MIGRATION=FALSE
PLATFORM_TYPE=VMDB
TGT_DB_UNIQUE_NAME=ORADB_tgt
MIGRATION_METHOD=ONLINE_PHYSICAL
DATA_TRANSFER_MEDIUM=DBLINK
ZDM_PDB_CLONE_METHOD=REFRESHABLE
ZDM_SRC_PDB_NAME=ORADB_PDB1
ZDM_TGT_PDB_NAME=ORADB_PDB1
ZDM_TGT_DBLINK_NAME=clonedblink
ZDM_TGT_DBLINK_USERNAME=
ZDM_TGT_DBLINK_PASSWORD_WALLET=
ZDM_PDB_REFRESH_INTERVAL=60
ZDM_SWITCHOVER=FALSE
ZDM_SRC_DB_RESTORE_SERVICE_NAME=ORADB_PDB1
步骤 8:在源数据库主机上运行以下命令,以评估迁移并验证源环境和目标环境是否已准备好进行迁移。
[opc@sourcedb ~]$ /opt/opc/zdm/zdm26.1/zdmcli migrate database \
> -rsp /opt/opc/zdm/zdm26.1/template/26.1.0/zdm_physical_PDB_Cloning.rsp \
> -sourcedb ORADB_src \
> -sourcenode sourcedb \
> -targethome /u01/app/oracle/product/23.0.0.0/dbhome_1 \
> -tdekeystorepasswd \
> -tgttdekeystorepasswd \
> -targetnode targetdb \
> -schedule NOW \
> -eval
Enter source database ORADB_src SYS password:
Enter source database ORADB_src TDE keystore password:
Enter target container database TDE keystore password:
Migration evaluation job started
Result file path: /opt/opc/zdm/zdm26.1/zdmbase/chkbase/scheduled/job-6-2026-06-27-09:08:10.log
======================JOB_EXECUTION_DETAILS_START======================
User: opc
Client: dbSysyabixhpq
...............................................
.........................
注:
如果 Oracle Key Vault (OKV) 端点密码与 TDE 密钥库密码相同,则
-tdekeystorepasswd和-tgttdekeystorepasswd选项就足够了。如果 OKV endpoint password 与 TDE keystore password 不同,则还指定以下选项:
-okvkeystorepasswd- 提示输入源 OKV 端点密码。-tgtokvkeystorepasswd- 提示输入目标 OKV 端点密码。通过这些选项,ZDM 可以在 wallet 迁移期间独立于 TDE 密钥库密码进行与 Oracle Key Vault 端点的验证。
验证迁移作业状态,如下所示。

步骤 9:启动迁移,并使用 -pauseafter 选项在 ZDM_CLONE_PDB_TGT 阶段后停止迁移。在此阶段中,对源 PDB 所做的更改将按 ZDM_PDB_REFRESH_INTERVAL 指定的间隔同步到目标 PDB。

步骤 10:验证迁移作业状态。

验证目标 PDB 的状态。

步骤 11:准备执行最终应用程序切换时,恢复迁移作业。
[opc@sourcedb ~]$ /opt/opc/zdm/zdm26.1/zdmcli resume job -jobid 6

在迁移完成后验证目标 PDB 的状态:

验证自动 TDE Wallet 迁移
以下日志显示 ZDM 会自动从源数据库主机上的 Oracle Key Vault (OKV) 下载 TDE wallet:

参考
- Oracle Zero Downtime Migration 26.1 文档
- https://docs.oracle.com/en/database/oracle/zero-downtime-migration/26.1/
- https://docs.oracle.com/en/database/oracle/zero-downtime-migration/26.1/zdmug/preparing-for-database-migration.html#GUID-0049AE7E-12D7-402B-A988-1C8A802922CF
- 准备数据库迁移
- https://docs.oracle.com/en/database/oracle/zero-downtime-migration/26.1/zdmug/preparing-for-database-migration.html
- Oracle Key Vault 文档
- https://docs.oracle.com/en/database/oracle/key-vault/
确认
作者: Amresh Kumar Singh(首席顾问)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Oracle ZDM 26.1 Instant Deploy End-to-End Physical PDB Cloning with Oracle Key Vault (OKV)
G58247-02