准备要迁移的数据库

确保满足源数据库和目标数据库先决条件,加密 wallet 可用,并且 Oracle Cloud Infrastructure Object Storage 存储桶可用且可访问。

准备源数据库服务器

验证源数据库是否满足零停机迁移先决条件。

  1. 验证源数据库服务器上的端口 22 是否允许从零停机迁移服务主机传入连接。
  2. 验证源数据库服务器上的扫描监听程序端口 1521 是否允许来自目标数据库服务器的传入连接。
  3. 验证源数据库是否正在归档日志模式下运行。

在源数据库上创建 Wallet

在源数据库上创建 wallet 并保存公共密钥。Wallet 用于对备份进行加密,需要对目标数据库上的备份进行解密。

  1. oracle 用户身份登录源数据库系统。
  2. 创建 Wallet 的文件夹(如果不存在)
    sudo mkdir -p /opt/oracle/dcs/commonstore/wallets/tde/ORCL
    sudo chown -R oracle:oinstall /opt/oracle/dcs
  3. 通过添加以下行设置 $ORACLE_HOME/network/admin/sqlnet.ora 文件中的加密 wallet 位置:
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
            (METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/ORCL/)))
  4. sysdba 用户身份使用 SQLPlus 创建 wallet。
    sqlplus "/as sysdba" 
    > ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/opt/oracle/dcs/commonstore/wallets/tde/ORCL/'identified by
            w6KP47FS3sggA5CAsG; 
    > ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password container = ALL;
    > ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password with backup container = ALL; 
    > select * FROM v$encryption_keys;
  5. 验证 wallet 状态是否为 open 以及 wallet 类型是否为 auto login
    如果源数据库和目标数据库启用了透明数据加密 (Transparent Data Encryption,TDE),则源数据库和目标数据库上的 wallet 状态必须为 OPEN,并且 WALLET_TYPE 必须为 AUTOLOGIN。
    sqlplus / as sysdba
    SQL> SELECT * FROM v$encryption_wallet;
  6. 如果 wallet 类型不是 auto login,则设置 auto login
    
    SQL> SELECT * FROM v$encryption_wallet; 
    > ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE
    '/opt/oracle/dcs/commonstore/wallets/tde/ORCL/' IDENTIFIED BY password; 
    > administer key management set keystore close identified by password;

准备目标数据库系统

验证源数据库是否满足零停机迁移先决条件。

  1. 验证目标数据库系统上的端口 22 是否已打开,以允许从零停机迁移服务主机传入连接。
  2. 验证目标数据库系统上的扫描监听程序端口 1521 是否打开以允许来自源数据库服务器的传入连接。
  3. 验证目标和源数据库版本是否相同。目标数据库补丁程序版本必须等于或高于源数据库补丁程序版本。
  4. 检查源数据库(Oracle Automatic Storage Management (Oracle ASM) 磁盘组或 Oracle Advanced Cluster File System (Oracle ACFS) 文件系统)上的磁盘组大小和使用情况,并确保在目标系统上预配了足够的存储且可用。

创建 ZDM 响应文件

创建 ZDM 响应文件以捕获用于驱动数据库迁移的基本参数。

使用示例 /u01/app/zdmhome/rhp/zdm/template/zdm_template.rsp 文件创建响应文件,然后更新示例条目以反映源、目标和备份环境。

  1. 从模板创建响应文件。
    cp $ZDM_HOME/rhp/zdm/template/zdm_template.rsp ~/zdm.rsp
    您将在以下步骤中更新目标参数。
  2. 更新目标数据库名称属性以提供目标数据库的唯一名称。
    该名称在数据库系统详细信息中可用。
    TGT_DB_UNIQUE_NAME=unique name for the target database
  3. 确保将迁移方法设置为默认值 DG_OSS
    DG_OSS 使用 Oracle Data GuardOracle Cloud Infrastructure Object Storage 服务。
    MIGRATION_METHOD=DG_OSS
  4. 将平台类型定义为虚拟机数据库。
    PLATFORM_TYPE=VMDB
  5. Oracle Automatic Storage Management (Oracle ASM)Oracle Advanced Cluster File System (Oracle ACFS) 指定目标数据库数据文件存储属性。
    # Target Database Datafile Storage Properties
    #------------------------------------------#
    # if using ASM for datafiles
    # e.g., TGT_DATADG=+DATAC3
    TGT_DATADG=+DATA
    TGT_REDODG=+RECO
    TGT_RECODG=+RECO
    #------------------------------------------#
    # if using ACFS for datafiles
    #------------------------------------------#
    TGT_DATAACFS=
    TGT_REDOACFS=
    TGT_RECOACFS=
    
  6. 如果需要代理才能从源节点访问 Oracle Cloud Infrastructure Object Storage ,则定义源 HTTP 代理 URL 和端口。如果需要 SSH 代理才能从 ZDM 服务主机访问源节点,则指定源代理 URL 和端口。
    SRC_HTTP_PROXY_URL=
    SRC_HTTP_PROXY_PORT=
  7. 如果设置了 SSH 隧道,则指定 SSH 隧道端口。
    TGT_SSH_TUNNEL_PORT
  8. 更新 Oracle Cloud Infrastructure Object Storage 主机名(云存储 REST 端点 URL)以访问 Oracle Cloud 账户。
    要查找对象存储名称空间,请打开控制台并转到对象存储设置。依次单击管理租户详细信息
    HOST=https://swiftobjectstorage.region.oraclecloud.com/v1/object_storage_namespace
    
  9. 指定您在控制台中创建的对象存储存储桶的名称。
    # The name of the target Bucket in the tenancy
    OPC_CONTAINER=migration
    
  10. 如果需要代理从源节点访问对象存储,则指定源代理主机和端口。
    SRC_OSS_PROXY_HOST=
    SRC_OSS_PROXY_PORT=
  11. 如果需要代理才能从目标节点访问对象存储,则指定目标代理主机和端口。
    TGT_OSS_PROXY_HOST=
    TGT_OSS_PROXY_PORT=