迁移到 Oracle Exadata Database Service on Dedicated Infrastructure

本节介绍如何将 Oracle Exadata 工作负载迁移到 Oracle Exadata Database Service on Dedicated Infrastructure ,以及如何将 VMware 应用程序迁移到 Oracle Cloud VMware Solution

体系结构

此体系结构显示从内部部署 Oracle Exadata 数据库和 VMware 应用程序迁移到 Oracle Exadata Database Service on Dedicated InfrastructureOracle Cloud VMware Solution

使用 Oracle Zero Downtime Migration 自动执行数据库迁移,同时在将数据从内部部署迁移到云时,停机时间极短。

使用 HCX 和 vMotion 等 VMware 工具将您在 VMware 上运行的内部部署应用迁移到 Oracle Cloud VMware Solution 。通过 Oracle Cloud VMware Solution ,您可以在 OCI 租户中完全自动实施 VMware 软件定义的数据中心 (SDDC),并在 OCI 裸金属实例上运行。

下图说明了此参考体系结构。



migrate-vmware-cloud-solution-exadata-dedicated-architecture.zip

此体系结构支持以下组件:

  • 区域

    Oracle Cloud Infrastructure 区域是一个局部地理区域,包含一个或多个称为可用性域的数据中心。区域独立于其他区域,广阔的距离可以将其分开(跨国家甚至大陆)。

  • 虚拟云网络 (VCN) 和子网

    VCN 是您在 Oracle Cloud Infrastructure 区域中设置的可定制软件定义网络。与传统数据中心网络一样,VCN 允许您完全控制您的网络环境。一个 VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后对其进行更改。您可以将 VCN 细分为多个子网,这些子网可以限定到区域或可用性域。每个子网包含一系列不与 VCN 中的其他子网重叠的连续地址。创建后可以更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • Oracle Exadata Database Service on Dedicated Infrastructure

    Oracle Exadata Database Service on Dedicated Infrastructure 在 OCI 数据中心提供 Oracle Exadata Database Machine 服务。Oracle Exadata Database Service on Dedicated Infrastructure 服务可以托管在 OCI 区域中的单个 Exadata 机架上运行的一个或多个 VM 集群中的多个 Oracle 数据库。Oracle Exadata Database Service on Dedicated Infrastructure 是一个理想的数据库整合平台。

  • Oracle Cloud VMware Solution 软件定义的数据中心 (SDDC)

    Oracle 和 VMware 合作开发 VMware 认证的软件定义数据中心 (SDDC) 实施,以便在 Oracle Cloud Infrastructure 中使用。此实施称为 Oracle Cloud VMware Solution ,它使用 Oracle Cloud Infrastructure 来托管高可用性 VMware SDDC。它还允许将所有内部部署 VMware SDDC 负载无缝迁移到 Oracle Cloud VMware SolutionOracle Cloud VMware Solution 包含以下 VMware 组件:

    • VMware vSphere ESXi
    • VMware vSAN
    • VMware vCenter
    • VMware NSX-T
    • VMware HCX(可选)
  • 裸金属

    Oracle Cloud VMware Solution 软件定义的数据中心 (SDDC) 包含托管 Oracle Cloud VMware Solution 的裸金属服务器。裸金属服务器支持需要大量核心、大量内存和高带宽(例如 Oracle Cloud VMware Solution )的应用。您可以在裸金属服务器上部署 Oracle Cloud VMware Solution ,并与其他公有云和内部部署数据中心相比,配置性能显著提升的虚拟机。

  • 服务网关

    通过服务网关,可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量会通过 Oracle 网络网状结构网络传输,并且从不通过互联网传输。

  • 动态路由网关 (DRG)

    DRG 是虚拟路由器,用于为同一区域中的 VCN 之间、VCN 与区域外的网络(例如另一个 Oracle Cloud Infrastructure 区域中的 VCN、内部部署网络或其他云提供商中的网络)的专用网络流量提供路径。

  • FastConnect

    Oracle Cloud Infrastructure FastConnect 提供了在您的数据中心与 Oracle Cloud Infrastructure 之间创建专用私有连接的简便方式。FastConnect 与基于 Internet 的连接相比,可提供更高的带宽选项和更可靠的网络体验。

  • 文件存储

    在逻辑迁移期间使用 OCI 文件存储从共享文件系统导入迁移的数据库。

  • 对象存储

    OCI 对象存储用于在迁移期间进行临时存储的逻辑和物理迁移。

使用须知

开始之前,请检查此设置中使用的主要组件版本,并查看产品文档以供日后参考。

复查要求

  • 确保源数据库运行的是 Oracle Database 版本 19.18 Enterprise Edition 或更高版本。
  • 目标数据库必须是 Oracle Exadata Database Service on Dedicated Infrastructure X8 或更高版本,位于 Oracle Database 版本 19.18 Enterprise Edition 或更高版本。
  • Oracle Zero Downtime Migration 必须是版本 21.4 或更高版本。
  • 中间存储必须包括 OCI 对象存储、Oracle ZFS Storage Appliance (NAS) 和 OCI 文件存储

查看文档

此解决方案手册介绍了如何迁移数据库负载。请参阅下面的解决方案来了解如何迁移 VMware 工作负载。对于数据库迁移的上下文、详细信息和参考,其他资源非常有用。

了解如何将工作负载的 VMware 组件迁移到 Oracle Cloud VMware Solution

查看 Oracle Zero Downtime Migration 资源:

查看物理迁移资源:

查看逻辑迁移资源:

查看 Oracle Database 资源:

关于所需产品和角色

此解决方案需要以下产品:

  • Oracle Cloud Infrastructure 身份和访问管理
  • OCI 计算
  • OCI 对象存储
  • OCI 文件存储
  • Oracle Zero Downtime Migration
  • Oracle Exadata
  • 专用基础结构上的 Oracle Exadata Database Service

这些是每种产品所需的角色。

产品名称:角色 要求 ...
Oracle Cloud Infrastructure Identity and Access Management :OCI_user
  • 为物理迁移创建验证令牌
  • 创建用于逻辑迁移的 API 密钥
OCI 计算admin 创建 OCI 计算实例以运行 Oracle Zero Downtime Migration 软件
OCI 对象存储Storage Admin 为逻辑和物理迁移创建 OCI 对象存储存储桶
OCI 文件存储Storage Admin 为逻辑迁移创建 OCI 文件存储
Oracle Zero Downtime Migration :opc 创建 zdmuser 以安装和运行 Oracle Zero Downtime Migration 软件
Oracle Zero Downtime Migration :zdmuser
  • 安装 Oracle Zero Downtime Migration 软件
  • 运行 Oracle Zero Downtime Migration
Oracle Exadata:root/sudoer user
  • 将网络文件系统共享从网络连接的存储设备挂载到导出数据库以进行逻辑迁移
  • Oracle Zero Downtime Migration 虚拟机启用无密码 SSH
  • 运行 sudo 命令以安装 Oracle Zero Downtime Migration 软件代理
  • 运行 sudo 命令以备份或导出数据库
Oracle Exadata 数据库:sys/system
  • 使用 Oracle Recovery Manager (RMAN) 进行物理迁移备份数据
  • 运行数据泵以导出数据库以进行逻辑迁移
Oracle Exadata Database Service on Dedicated Infrastructure :Database Admin 创建目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库
专用基础设施上的 Oracle Exadata Database Service on Dedicated Infrastructure VM 集群节点:opc
  • 将网络文件系统共享从 OCI 文件存储挂载到导入逻辑迁移的数据库
  • Oracle Zero Downtime Migration 虚拟机启用无密码 SSH
  • 安装 Oracle Zero Downtime Migration 软件代理
  • 运行 sudo 命令以恢复或导入数据库
Oracle Exadata Database Service on Dedicated Infrastructure 数据库:sys/system
  • 使用 Oracle Recovery Manager (RMAN) 恢复物理迁移的数据
  • 运行数据泵以导入数据库进行逻辑迁移

要获得所需资源,请参阅 Oracle 产品、解决方案和服务

关于逻辑和物理迁移

Oracle Zero Downtime Migration 支持从 Oracle Exadata 到 Oracle Exadata Database Service on Dedicated Infrastructure 的两种类型的数据库迁移:逻辑迁移和物理迁移。

逻辑迁移使用 Oracle Data Pump 和 Oracle GoldenGate 的组合,而物理迁移使用 Oracle Recovery Manager (RMAN)Oracle Data Guard 的组合。下表说明了应使用逻辑或物理迁移的方案。

逻辑迁移 物理迁移
建议迁移几个可插入数据库和/或方案。 建议在迁移完整数据库时使用。例如,包含所有可插入数据库的容器数据库,或者提升和转移。
可以迁移有选择性的可插入数据库 (pluggable database,PDB) 和/或方案。 容器数据库将迁移到容器数据库,而非容器数据库将迁移到非容器数据库。
源和目标上的 Sys 口令可能不同。源和目标之间的数据库名称可以不同。 源和目标上的 Sys 口令和数据库名称应相同。源和目标上的 DB_UNIQUE_NAME 必须不同。
可以在迁移期间升级数据库。 在迁移过程中无法升级数据库。

使用逻辑迁移进行迁移

本节介绍如何执行脱机逻辑迁移。对于联机迁移,请参阅“复查文档”部分。

在执行迁移之前,请注意以下事项。

  • Oracle Exadata 上的源数据库不必加密。Oracle Zero Downtime Migration 将在迁移期间加密目标数据库。
  • 源和目标数据库不必具有相同的 sys 密码、Wallet 密码、数据库版本、数据库名称和补丁程序级别。
  • Oracle Zero Downtime Migration 允许将某些可插入数据库 (pluggable database,PDB) 和/或方案迁移到 Oracle Exadata Database Service on Dedicated Infrastructure 中的可插入数据库。
  • 逻辑迁移需要共享文件系统。在逻辑迁移期间,Oracle Zero Downtime Migration 不会将数据直接导出到 OCI 对象存储。在源 Exadata 数据库上,Oracle Zero Downtime Migration 会将数据导出到共享文件系统(网络文件系统或 Oracle Advanced Cluster File System)。然后,导出的数据将上载到 OCI 对象存储。然后,Oracle Zero Downtime Migration 将数据转储从 OCI 对象存储移至 OCI 文件存储。最后,Oracle Exadata Database Service on Dedicated Infrastructure 可以通过网络文件系统从 OCI 文件存储导入数据。
  • Oracle Exadata 内部部署可以运行单实例和 RAC 数据库。Oracle Exadata Database Service on Dedicated Infrastructure 运行 RAC 数据库。在数据库迁移期间,Oracle Zero Downtime Migration 会根据需要将单实例转换为 RAC 数据库。
  • 在内部部署 Oracle Exadata 中,使用 Oracle 透明数据加密对数据库进行加密是可选的。将数据库从 Exadata 迁移到 Oracle Exadata Database Service on Dedicated Infrastructure 时,将始终加密目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库。
  • 以下步骤假定安装了 Oracle Exadata 的数据中心与配置了 Oracle Exadata Database Service on Dedicated InfrastructureOracle Zero Downtime Migration 虚拟机的 OCI 虚拟云网络之间存在直接网络连接(通过 FastConnect 或 IPSec VPN,如体系结构图中所示)。

以下步骤介绍了如何执行脱机逻辑迁移。

  1. 在 OCI 控制台中,在同一 VCN 中创建一个计算实例,其中将配置目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库。
    此计算实例可以是任何配置,其中至少有两个 OCPU 和 16GB RAM(运行 Oracle Linux 7。9 操作系统)。此虚拟机将用于运行 Oracle Zero Downtime Migration 软件。
  2. 请按照“查看文档”部分中的 Oracle Zero Downtime Migration 安装文档在 OCI 计算实例上下载并安装 Oracle Zero Downtime Migration 21.4 软件。
    zdmuser 身份运行 Oracle Zero Downtime Migration 软件。
  3. zdmuser 身份登录到运行 Oracle Zero Downtime Migration 软件的计算实例,并生成 SSH 密钥对。启用从 zdmuser 账户到源 Exadata 数据库上的所有节点(rootprivilege-sudoer user)以及目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库 opc user 账户上的所有 VM 集群节点的无密码 SSH。
  4. 确保 Oracle Zero Downtime Migration VM 可以使用主机名和 IP 地址与源数据库主机通信。请确认以下几点:
    • 如有必要,修改 VCN DNS 解析程序或 Oracle Zero Downtime Migration VM 中的 /etc/hosts 文件。
    • 验证是否存在允许 Oracle Zero Downtime Migration VM 连接到默认监听程序端口 1521 和 ssh 端口 22 上的源数据库的安全规则。
    • 确保 Oracle Zero Downtime Migration VM 可以到达默认监听程序端口 1521 和 ssh 端口 22 上的目标 Oracle Exadata Database Service on Dedicated Infrastructure 主机。
  5. 在 Oracle ZFS Storage Appliance 或网络连接的存储设备上,创建要在迁移过程中用作数据库数据转储的占位符的网络文件系统共享资源。
  6. 在 Exadata 数据库的所有节点上挂载网络文件系统共享。
    确保所有用户都具有读取、写入、执行 (rwx) 权限。记下挂载点。
  7. 在 OCI 控制台中,创建 OCI 文件存储
    记下挂载目标、导出和 IP 地址。默认情况下,IP 地址位于 Oracle Exadata Database Service on Dedicated Infrastructure 备份网络上。
  8. 使用 IP 地址并从步骤 7 中导出,通过网络文件系统在 Oracle Exadata Database Service on Dedicated Infrastructure VM 集群的所有节点上挂载此文件存储。
    确保虚拟云网络包含安全策略,以允许 Oracle Exadata Database Service on Dedicated Infrastructure 备份网络上的网络文件系统协议。记下挂载点。
  9. Create a target Oracle Exadata Database Service on Dedicated Infrastructure database using the OCI console or REST API.对数据库进行如下配置:
    • 新目标数据库可以具有与源数据库不同的名称。
    • 新数据库可以是比源数据库更新的版本。
    • admin 用户提供口令。记下密码。
    • 请勿在创建数据库期间选择备份目标或启用自动备份。可以在数据库迁移之后启用这些设置。
    记下创建数据库后的数据库 OCID。
  10. 在 OCI 控制台中,创建 OCI 对象存储存储桶(如果尚不存在)。
    请注意 Swift URL、对象存储名称空间和存储桶名称。
  11. 使用 OCI 控制台为拥有目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库并且有权将数据上载到步骤 10 中创建的 OCI 对象存储存储桶的 OCI 用户创建 API 密钥。
    请注意用户 OCID、租户 OCID、指纹和 OCI 区域。将对应的私钥和公钥保存在 PEM 文件中。Oracle Zero Downtime Migration 将使用此 API 密钥连接到 OCI 以在数据库迁移期间获取目标数据库信息并将数据转储上载到 OCI 对象存储
  12. 将上一步中的 PEM 文件复制到 Oracle Zero Downtime Migration VM。
  13. sys 用户身份登录到源 Exadata 数据库,以确保参数 Streams_Pool_Size 至少设置为 2G,例如:
    SQL>show parameter streams_pool_size;
    SQL>alter system set streams_pool_size=2G scope=both SID=’*’;                  
  14. 使用零停机迁移随附的 Oracle Zero Downtime Migration 的逻辑迁移响应文件模板为迁移创建响应文件。关键参数包括:
    • TARGETDATABASE_OCIDOracle Exadata Database Service on Dedicated Infrastructure 目标数据库的 OCID。
    • MIGRATION_METHOD: OFFLINE_LOGICAL
    • DATA_TRANSFER_MEDIUM: OSS
    • TARGETDATABASE_ADMINUSERNAME: system
    • SOURCEDATABASE_ADMINUSERNAME: system
    • SOURCEDATABASE_CONNECTIONDETAILS_HOST :源 Exadata 数据库上第一个节点的 IP/主机名。
    • SOURCEDATABASE_CONNECTIONDETAILS_PORT: 1521
    • SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME :源 PDB 或非容器数据库(非 CDB)的服务名称。使用 lsnrctl 查找。
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_TENANTID :步骤 11 中的租户 OCID。
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_USERID :步骤 11 中的用户 OCID。
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_FINGERPRINT :步骤 11 中的指纹。
    • OCIAUTHENTICATIONDETAILS_PRIVATEKEYFILE :步骤 12 中 Oracle Zero Downtime Migration 服务器上私有密钥 PEM 文件的文件路径。
    • OCIAUTHENTICATIONDETAILS_REGIONID :步骤 11 中 OCI 用户的 OCI 区域 ID。
    • TARGETDATABASE_CONNECTIONDETAILS_PORT: 1521
    • TARGETDATABASE_CONNECTIONDETAILS_SERVICENAME :目标数据库中目标可插入数据库的服务名。使用 lsnrctl 查找。
    • SOURCECONTAINERDATABASE_ADMINUSERNAME: system
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_HOST :源 Exadata 数据库上第一个节点的 IP/主机名。
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_PORT: 1521
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_SERVICENAME :Exadata 数据库中源容器数据库的服务名。使用 lsnrctl 查找 )。
    • DATAPUMPSETTINGS_JOBMODE: SCHEMA
    • DATAPUMPSETTINGS_FIXINVALIDOBJECTS: TRUE
    • DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME: mig
    • DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_PATH :步骤 6 中的网络文件系统挂载点。
    • DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME: mig.
    • DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_PATH :步骤 8 中的网络文件系统挂载点。
    • DATAPUMPSETTINGS_CREATEAUTHTOKEN: TRUE
    • DATAPUMPSETTINGS_DATAPUMPPARAMETERS_IMPORTPARALLELISMDEGREE: 4
    • DATAPUMPSETTINGS_DATAPUMPPARAMETERS_EXPORTPARALLELISMDEGREE: 4
    • DATAPUMPSETTINGS_DATABUCKET_NAMESPACE :步骤 10 中的 OCI 对象存储名称空间。
    • DATAPUMPSETTINGS_DATABUCKET_BUCKETNAME :步骤 10 中的 OCI 对象存储存储桶名称。
    • TABLESPACEDETAILS_AUTOCREATE: TRUE
    • TABLESPACEDETAILS_USEBIGFILE: TRUE
    • TABLESPACEDETAILS_EXTENTSIZEMB: 512
    • EXCLUDEOBJECTS-1: owner:PDBADMIN
  15. 运行 Oracle Zero Downtime Migration 模拟运行迁移作业 (-eval),以验证迁移的所有先决条件都是可能的。这会运行云迁移前指导工具 (CPAT) 来验证源数据库是否适合使用 Oracle Zero Downtime Migration 逻辑迁移迁移迁移到 Oracle Exadata Database Service on Dedicated Infrastructure 。在继续之前解决 CPAT 报告的问题。例如:
    
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_Exadata_node \
    -srcauth zdmauth \
    -srcarg1 user:root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_exadata_database_dedicated_VM_cluster_node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_14 \
    -eval
    此命令要求提供源数据库和目标数据库的 sys 用户密码。
    成功运行后,继续执行下一步。
  16. 试运行迁移成功后,运行 Oracle Zero Downtime Migration 作业。例如:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_Exadata_node \
    -srcauth zdmauth \
    -srcarg1 user:root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_exadata_database_dedicated_VM_cluster_node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_14
    此命令要求提供源数据库和目标数据库的 sys 用户密码。

使用物理迁移进行迁移

本节介绍如何执行脱机物理迁移。对于联机迁移,请参阅“复查文档”部分。

在执行物理迁移之前,请注意以下事项。

  • Oracle Database 19.16 中有一个用于表空间加密管理的新参数。此参数可能会导致物理迁移冲突。有关详细信息,请查看“Review Documentation(复查文档)”部分中的“Tablespace Encryption Management(表空间加密管理)”。
  • Oracle Exadata 内部部署可以运行单实例和 RAC 数据库。Oracle Exadata Database Service on Dedicated Infrastructure 运行 RAC 数据库。在数据库迁移期间,Oracle Zero Downtime Migration 会根据需要将单实例转换为 RAC 数据库。
  • 迁移之前,必须在源数据库中定义透明数据加密 (Transparent Data Encryption,TDE) wallet,即使源数据库未加密也是如此。
  • 在内部部署 Oracle Exadata 中,使用 Oracle 透明数据加密对数据库进行加密是可选的。将数据库从 Exadata 迁移到 Oracle Exadata Database Service on Dedicated Infrastructure 时,将始终加密目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库。
  • 以下步骤假定安装了 Exadata 的数据中心与配置了 Oracle Exadata Database Service on Dedicated InfrastructureOracle Zero Downtime Migration 虚拟机的 OCI 虚拟云网络之间存在直接网络连接(通过 FastConnect 或 IPSec VPN,如体系结构图中所示)。
  • Oracle Exadata 上的源数据库不必加密。Oracle Zero Downtime Migration 将在迁移期间加密目标数据库。
  • 源和目标数据库上的 sys 口令、Wallet 口令、数据库版本和补丁程序级别必须相同。
  • Oracle Zero Downtime Migration容器数据库 (CDB) 迁移到 CDB ,将非 CDB 迁移到非 CDB
  • Oracle Zero Downtime Migration 使用 Oracle Database Backup Cloud Service 将源 Exadata 数据库备份到 OCI 对象存储。然后,Oracle Zero Downtime Migration 将从此备份恢复目标数据库。

以下步骤介绍了如何执行脱机物理迁移。

  1. 在 OCI 控制台中,在将配置目标数据库的同一子网中创建计算实例。
    此计算实例可以是任何配置,其中至少有两个 OCPU 和 16GB RAM(运行 Oracle Linux 7。9 操作系统)。此虚拟机将用于运行 Oracle Zero Downtime Migration 软件。
  2. 请按照“查看文档”部分中的 Oracle Zero Downtime Migration 安装文档在 OCI 计算实例上下载并安装 Oracle Zero Downtime Migration 21.4 软件。
    zdmuser 身份运行 Oracle Zero Downtime Migration 软件。
  3. zdmuser 身份登录到运行 Oracle Zero Downtime Migration 软件的计算实例,并生成 SSH 密钥对。启用从 zdmuser 账户到源 Exadata 数据库上的所有节点(rootprivilege-sudoer user)以及目标数据库 opc user 账户上的所有 VM 集群节点的无口令 SSH。
  4. 确保 Oracle Zero Downtime Migration VM 可以使用主机名和 IP 地址与源数据库主机通信。请确认以下几点:
    • 如有必要,修改 VCN DNS 解析程序或 Oracle Zero Downtime Migration VM 中的 /etc/hosts 文件。
    • 验证是否存在允许 Oracle Zero Downtime Migration VM 连接到默认监听程序端口 1521 和 ssh 端口 22 上的源数据库的安全规则。
    • 确保 Oracle Zero Downtime Migration VM 可以访问默认监听程序端口 1521 和 ssh 端口 22 上的目标数据库主机。
  5. 在 OCI 控制台中,创建 OCI 对象存储存储桶(如果尚不存在)。
    请注意 Swift URL、对象存储名称空间和存储桶名称。
  6. 在 OCI 控制台中,为将数据上载到 OCI 对象存储存储桶的 OCI_user 创建验证令牌。
    请注意该标记,它不会再次显示。
  7. 确保安全策略允许 OCI_user 将数据上载到 OCI 对象存储存储桶。
  8. Create an Oracle Exadata Database Service on Dedicated Infrastructure target database using the OCI GUI or REST API.按如下方式配置目标数据库:
    • 目标数据库和源数据库的名称必须相同,但 DB_UNIQUE_NAME 必须不同。
    • 源和目标数据库上的 sys 口令、Wallet 口令、数据库版本、补丁程序级别和时区文件版本必须相同。
    • 请勿选择备份目标或启用自动备份。迁移数据库后,可以启用这些设置。
  9. 验证源数据库是否在归档日志模式下配置。如果归档日志未启用,请参阅下面的启用归档日志模式
  10. 如果源数据库未加密,请参阅下面的配置透明数据加密 (TDE) 密钥库。数据不需要加密,物理迁移只需要 TDE 密钥库。确保密钥库 (wallet) 密码与用于在 Oracle Exadata Database Service on Dedicated Infrastructure 中创建目标数据库的 sys/wallet 密码相同。
  11. Oracle Zero Downtime Migration 创建响应文件以运行迁移。关键参数包括:
    • TGT_DB_UNIQUE_NAME :目标 Oracle Exadata Database Service on Dedicated Infrastructure 数据库的数据库唯一名称。
    • MIGRATION_METHODOFFLINE_PHYSICALONLINE_PHYSICAL
    • DATA_TRANSFER_MEDIUM: OSS
    • PLATFORM_TYPE: EXACS
    • HOST :步骤 5 中 OCI 对象存储名称空间的 Swift URL,格式为:https://swiftobjectstorage.<region>.oraclecloud.com/v1/<namespace>>.例如:
      https://switfobjectstorage.us-phoenix-1.oraclecloud.com/v1/axwytvijqqld
    • OPC_CONTAINER :步骤 4 中的 OCI 对象存储存储桶名称。
    • SHUTDOWN_SRC: TRUE
  12. 运行 Oracle Zero Downtime Migration 模拟运行迁移作业 (-eval),以验证迁移的所有先决条件都是可能的。例如:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_Exadata_node \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_exadata_database_dedicated_VM_cluster_node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10 \
    -backupuser “OCI_user_id_for_user_allowed_to_upload_data_to_OCI_object_storage_bucket”
    -eval
    此命令要求提供两个密码。第一个密码是源数据库的 sys 密码。第二个密码是用户将数据上载到 OCI 对象存储存储桶的 OCI_user 密码。不要在此处输入用户密码,而是从步骤 6 输入验证令牌。
    成功运行后,继续执行下一步。
  13. 运行 Oracle Zero Downtime Migration 作业。例如:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_Exadata_node \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_exadata_database_dedicated_VM_cluster_node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10 \
    -backupuser “OCI_user_id_for_user_allowed_to_upload_data_to_OCI_object_storage_bucket
    此命令要求提供两个密码。第一个密码是源数据库的 sys 密码。第二个密码是用户将数据上载到 OCI 对象存储存储桶的 OCI_user 密码。不要在此处输入用户密码,而是从步骤 6 输入验证令牌。
脱机物理移植已完成。

启用归档日志模式

必须在源数据库中为 Oracle Zero Downtime Migration 物理迁移启用归档日志模式。以下步骤将描述如何在源数据库上配置归档日志模式。

  1. 验证源数据库未在归档日志模式下配置。
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    NOARCHIVELOG
  2. 配置源数据库日志归档目标。由于此配置适用于在 Exadata 中运行的数据库,因此归档日志目标必须是 Oracle RECO ASM 磁盘组。
    SQL> alter system set log_archive_dest_1='LOCATION=+RECOC1' scope=both SID='*';
    System altered.
    SQL> select destination,STATUS from v$archive_dest where statuS='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    +RECOC1
    VALID
  3. 关闭数据库。
    $ srvctl stop database -d db_name
  4. 开始在第一个节点上挂载数据库。
    SQL> startup mount;
    ORACLE instance started.
  5. 启用归档日志模式。
    alter database archivelog;
  6. 打开数据库。
    alter database open;
  7. 验证数据库是否处于归档日志模式。
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    ARCHIVELOG
    SQL> select destination,STATUS from v$archive_dest where status='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    +RECOC1
    VALID
  8. 在第二个节点上重新启动数据库。
    $ srvctl start instance -d db_name -n hostname_node2
  9. 验证两个节点上的可插入数据库是否处于打开、读取和写入模式。如果可插入数据库未打开,请打开两个节点上的可插入数据库并保存状态。
    SQL> Alter pluggabale database pdb_name open instances=all;
    SQL>Alter pluggable database pdb_name save state instances=all;

配置透明数据加密 (TDE) 密钥库

Oracle Zero Downtime Migration 物理迁移需要 auto_login TDE 加密密钥库/钱包(即使源数据库未加密)。必须使用与目标数据库密钥库相同的密码配置此密钥库。以下步骤介绍了如何在源数据库上配置密钥库。

  1. 检查是否为数据库配置了默认密钥库位置。
    SQL> select * from v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED
    1
    SQL>
    此输出显示未配置密钥库或 wallet。
  2. 为两个 Exadata 节点上的 oracle 用户设置变量 TNS_ADMIN
    $ORACLE_HOME/network/admin/db_name
  3. 创建一个目录以在 TNS_ADMIN 指向的两个 Exadata 节点上存储 sqlnet.ora 文件。
    mkdir -p $ORACLE_HOME/network/admin/db_name
  4. TNS_ADMIN 指向的目录中创建 sqlnet.ora 文件,并在两个 Exadata 节点上使用以下内容。
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
     (METHOD_DATA=(DIRECTORY=/u01/app/oracle/admin/db_name/wallet)))
  5. 创建目录以将密钥库或 wallet 存储在 sqlnet.ora 在两个 Exadata 节点上所指向的位置。
    $mkdir -p $/u01/app/oracle/admin/db_name/wallet
  6. 在第一个节点上,创建使用口令保护的密钥库。
    还必须为此口令配置目标数据库密钥库。
    SQL>administer key management create keystore '/u01/app/oracle/admin/db_name/wallet' identified by keystore_password;
  7. 在第一个节点上,打开密钥库。
    如果源数据库是非 CDB,则删除 container = ALL
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password container = ALL;
  8. 为密钥库创建备份。
    如果源数据库是非 CDB,则删除 container = ALL
    SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password with backup container = ALL;
  9. 验证是否已创建和备份密钥库。
    SQL> SELECT * FROM v$encryption_keys;
    Snip…
    ACTIVATING_PDBNAME
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    ATOlrcGaa0/iv/dFeRSkNSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    db_name
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    1 86B637B62FDF7A65E053F706E80A27CA
    Snip…
  10. 从在步骤 7 中创建的密钥库创建 auto_login 密钥库。
    SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/u01/app/oracle/admin/db_name/wallet' IDENTIFIED BY keystore_password ;
  11. 从步骤 7 中关闭密钥库。
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY keystore_password;
  12. 验证 auto_login 密钥库是否仍处于打开状态。
    SQL> SELECT * FROM v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    OPEN AUTOLOGIN SINGLE NONE NO
  13. 创建从节点 1 到节点 2 的 wallet 文件。
    cd /u01/app/oracle/admin/db_name/wallet.
    scp * node_2:/u01/app/oracle/admin/db_name/wallet
  14. 在两个 Exadata 节点上重新启动数据库。
    $ srvctl stop database -d db_name
    $ srvctl start database -d db_name
    $ srvctl status database -d db_name
    Instance db_name1 is running on node node_1
    Instance db_name2 is running on node node_2
  15. 验证两个节点上的 auto_login wallet 是否已打开。
    SQL> SELECT * FROM v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet/
    OPEN AUTOLOGIN SINGLE NONE NO
    1
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    OPEN AUTOLOGIN SINGLE UNITED NO
    2
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    OPEN_NO_MASTER_KEY AUTOLOGIN SINGLE UNITED UNDEFINED
    3
    SQL>
  16. 验证两个节点上的可插入数据库是否处于打开、读取和写入模式。如果可插入数据库未打开,请打开两个节点上的可插入数据库并保存状态。
    SQL> Alter pluggabale database pdb_name open instances=all;
    SQL>Alter pluggable database pdb_name save state instances=all;