注意:

从内部部署 19c 非容器数据库迁移到 Oracle Database 23ai 容器数据库

简介

零停机迁移 (ZDM) 21.5 引入了通过在途升级进行物理迁移,从而为 Oracle 数据库实现无缝转换。此功能支持将 11.2.0.4 和 12c Oracle 数据库迁移到 19c Oracle 数据库,以及从 19c 源数据库迁移到 Oracle Database 23ai。

本教程概述了 ZDM 如何在目标级别执行升级时便于将源非容器数据库 (CDB) 19c 数据库迁移到 CDB。ZDM 使用临时非 CDB 目标数据库执行初始迁移,以便客户迁移和升级非 CDB 数据库。完成此初始阶段后,ZDM 将利用自动升级转换为多租户并将数据库升级到所需版本。

本教程专门针对将运行 19c 版的内部部署非 CDB 数据库从 Linux 平台迁移到 Oracle Database 23ai CDB 进行了定制。

以下是源和目标环境的属性和详细信息。

图中显示了源和目标详细信息

目标

先决条件

任务 1:准备和安装 ZDM 服务器

  1. 为 ZDM 软件安装预配专用计算主机。安装 ZDM 软件的主机称为 ZDM 服务主机。在主机上必须满足以下先决条件:

    • Oracle Linux 8 和引导卷大小为 200GB。
    • 100GB 可用存储空间。
    • 没有运行 Oracle Grid Infrastructure。
    • 可以连接到源数据库和目标数据库(服务器)。
  2. 使用 putty 连接到 ZDM 主机。

  3. 运行以下命令以扩展文件系统,使 200GB 可用。

    [opc@zdm ~]$ sudo su -
    [root@zdm ~]# df -h /
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        39G  3.2G   36G   9% /
    [root@zdm ~]# /usr/libexec/oci-growfs -y
    [root@zdm ~]# df -h /
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       192G  3.2G  189G   2% /
    
  4. 使用以下命令以 root 用户身份创建新组、用户和所需的目录。

    [root@zdm ~]# groupadd zdm
    [root@zdm ~]# useradd -g zdm zdmuser
    [root@zdm ~]# mkdir -p /home/zdmuser/zdminstall
    [root@zdm ~]# mkdir /home/zdmuser/zdmhome
    [root@zdm ~]# mkdir /home/zdmuser/zdmbase
    [root@zdm ~]# chown -R zdmuser:zdm /home/zdmuser/
    
  5. 使用以下命令以 root 用户身份安装所需的软件包。

    [root@zdm ~]# yum install oraclelinux-developer-release-el8 libnsl perl unzip glibc-devel expect libaio ncurses-compat-libs ncurses-devel numactl-libs openssl mlocate bind-utils
    
  6. 下载 ZDM 软件版本 21.5,并将 zip 文件复制到 ZDM 主机到 /home/zdmuser/zdminstall/ 目录。使用以下命令以 root 用户身份将 zip 文件的所有者更改为 zdmuser

    [root@zdm ~]# chown zdmuser:zdm /home/zdmuser/zdminstall/zdm21.5.zip
    
  7. 使用以下命令将 ZDM 软件安装为 zdmuser

    [zdmuser@zdm ~]$ cd /home/zdmuser/zdminstall/
    [zdmuser@zdm zdminstall]$ unzip zdm21.5.zip
    
    [zdmuser@zdm zdminstall]$ ZDMHOME=/home/zdmuser/zdmhome
    [zdmuser@zdm zdminstall]$ ZDMBASE=/home/zdmuser/zdmbase
    
    [zdmuser@zdm zdminstall]$ /home/zdmuser/zdminstall/zdm21.5/zdminstall.sh setup oraclehome=/home/zdmuser/zdmhome oraclebase=/home/zdmuser/zdmbase ziploc=/home/zdmuser/zdminstall/zdm21.5/zdm_home.zip -zdm
    ZDM service setup finished successfully...
    
  8. 运行以下命令以启动 ZDM 并以 zdmuser 身份检查状态。

    [zdmuser@zdm ~]$ $ZDMHOME/bin/zdmservice start
    Return code is 0
    Server started successfully.
    [zdmuser@zdm ~]$ $ZDMHOME/bin/zdmservice status
    ---------------------------------------
    		Service Status
    ---------------------------------------
    Running:       true
    
  9. 运行以下命令为 zdmuser 创建 SSH 密钥对。以后将使用 SSH 登录到源和目标数据库服务器。保留默认值。

    [zdmuser@zdm ~]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/zdmuser/.ssh/id_rsa):
    Created directory '/home/zdmuser/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/zdmuser/.ssh/id_rsa.
    Your public key has been saved in /home/zdmuser/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:giU7jz/8Z1VPiS9Ds/gfokHdevpm0dk59fPYEHRChs4
    zdmuser@zdmhost
    The key's randomart image is:
    
  10. 用户详细信息页为您的 OCI 用户创建验证令牌。

    单击授权标记生成标记,输入说明,然后单击生成标记

    注:请将此标记复制到您的记录,因为不会再次显示它。

    图中显示了验证令牌的创建

  11. 运行以下命令以 zdmuser 身份安装 Oracle Cloud Infrastructure 命令行界面 (Command Line Interface,OCI CLI) 工具,该工具将用于访问 OCI 资源。例如,将数据泵转储文件复制到 OCI 对象存储中。

    [zdmuser@zdm ~]$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
    

    注: OCI CLI 安装需要用户 OCID租户 OCID主区域,根据您的云租户使用这些值并将其他参数值保留为默认值。

    [zdmuser@zdm ~]$ oci setup config
    
  12. 运行以下命令将 API 签名公钥从 zdmhost 上载到云租户中的 OCI 用户。

    [zdmuser@zdmhost ~]$ cat /home/zdmuser/.oci/oci_api_key_public.pem
    -----BEGIN PUBLIC KEY-----
    **********
    -----END PUBLIC KEY-----
    

    转到 OCI 控制台,导航到用户详细信息页面,单击 API 密钥添加 API 密钥。选择粘贴公钥,输入上述命令的输出,然后单击添加

    图中显示了如何添加 API 密钥

  13. 运行以下命令,使用 OCI CLI 或 OCI 控制台在 OCI 租户中创建标准 OCI Object Storage 桶。

    [zdmuser@zdm ~]$ oci os bucket create --compartment-id ocid1.compartment.oc1.....lh4lfamxdrpuxg3x……… --name zdmbucket
    
  14. zdmhost 到源和目标数据库服务器的连接:将 SSH 密钥以 zdmuser 身份从 zdmhost 复制到在任务 1.9 中创建的源和目标。

    #on ZDM host as zdmuser
    [zdmuser@zdm ~]$ cat .ssh/id_rsa.pub
    #on the source database host as user opc
    [opc@sourcedb ~]$ vi .ssh/authorized_keys
    #insert the public key and save the changes
    [opc@targetdb ~]$ vi .ssh/authorized_keys
    #insert the public key and save the changes
    
  15. 通过以 root 用户身份将 zdmhost 上的主机名、IP 和 FQDN 复制到 /etc/hosts,将源数据库和目标数据库的主机名解析为 zdmhost。

任务 2:在源数据库和目标数据库中运行预检查

  1. 运行以下命令可在目标 Oracle Base Database Service 实例上创建与源版本相同的 ORACLE_HOME

    [root@tgtzdm ~]# dbcli list-dbhomes
    
    ID                                       Name                 DB Version                               Home Location                                 Status
    ---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
    c548b052-64b7-4257-bfdc-d7c201a430ab     OraDB23000_home1     23.5.0.24.07                             /u01/app/oracle/product/23.0.0.0/dbhome_1     Configured
    
    [root@tgt23ai ~]# dbcli create-dbhome -v 19.23
    
    Job details
    ----------------------------------------------------------------
    					ID:  a63db258-7ffc-4dee-b8e5-5accf223e39b
    			Description:  Database Home creation with Id : db1b4bb8-2ed0-4c0f-ade9-a656f21cf808
    				Status:  Created
    				Created:  September 19, 2024 at 3:22:48 PM IST
    			Progress:  0%
    				Message:  Create Database Home
    			Error Code:
    
  2. 运行以下命令以验证数据库主目录的创建。

    [root@tgt23ai ~]# dbcli describe-job --jobid a63db258-7ffc-4dee-b8e5-5accf223e39b
    
    Job details
    ----------------------------------------------------------------
    					ID:  a63db258-7ffc-4dee-b8e5-5accf223e39b
    			Description:  Database Home creation with Id : db1b4bb8-2ed0-4c0f-ade9-a656f21cf808
    				Status:  Success
    				Created:  September 19, 2024 at 3:22:48 PM IST
    			Progress:  100%
    				Message:  Create Database Home
    			Error Code:
    
    Task Name                                                                Start Time                          End Time                            Status
    ------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
    Database home creation                                                   September 19, 2024 at 3:22:49 PM IST September 19, 2024 at 3:27:40 PM IST Success
    
    
    [root@test23ai ~]# dbcli list-dbhomes
    
    ID                                       Name                 DB Version                               Home Location                                 Status
    ---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
    43247858-4ff6-4fcb-85f2-09d453d863bf     OraDB23000_home1     23.5.0.24.07                             /u01/app/oracle/product/23.0.0.0/dbhome_1     Configured
    a63db258-7ffc-4dee-b8e5-5accf223e39b     OraDB19000_home1     19.23.0.0.0                              /u01/app/oracle/product/19.0.0.0/dbhome_1     Configured
    

任务 3:准备响应文件

  1. 将位于 $ZDM_HOME/rhp/zdm/template/ 下的 zdmhost 上的模板响应文件复制到其他目录。

  2. 根据源和目标环境设置修改复制的响应文件。以下是共享的响应文件样例,其中包含用于完成升级的迁移的最少参数。

    TGT_DB_UNIQUE_NAME=tgt23ai_ai
    MIGRATION_METHOD=OFFLINE_PHYSICAL
    DATA_TRANSFER_MEDIUM=OSS
    PLATFORM_TYPE=VMDB
    SRC_DB_LISTENER_PORT=1521
    HOST=https://swiftobjectstorage.eu-frankfurt-1.oraclecloud.com/v1/frrudica1wgd
    OPC_CONTAINER=ZDM
    NONCDBTOPDB_CONVERSION=TRUE
    TGT_SKIP_DATAPATCH=FALSE
    ZDM_NONCDBTOPDB_PDB_NAME=newpdb23
    ZDM_PRE_UPGRADE_TARGET_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
    

任务 4:评估迁移

通过根据源和目标详细信息修改参数来评估迁移。

./zdmcli migrate database -rsp /home/zdmuser/response_files/zdm_phyupg.rsp \
-sourcedb test \
-sourcenode test23ai1 \
-srcauth zdmauth \
-srcarg1 user:opc \
-srcarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-srcarg3 sudo_location:/usr/bin/sudo \
-targetnode tgt23ai \
-tgtauth zdmauth \
-tgtarg1 user:opc \
-tgtarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-tgtarg3 sudo_location:/usr/bin/sudo \
-tdekeystorepasswd \
-tgttdekeystorepasswd \
-backupuser oracleidentitycloudservice/s****aik@oracle.com \
-eval

注:您可以使用以下命令监视作业。

$ZDM_HOME/bin/zdmcli query job -jobid <jobid>

任务 5:执行实际迁移

使用以下命令执行实际迁移。根据源和目标环境修改值。

./zdmcli migrate database -rsp /home/zdmuser/response_files/zdm_phyupg.rsp \
-sourcedb test \
-sourcenode test23ai1 \
-srcauth zdmauth \
-srcarg1 user:opc \
-srcarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-srcarg3 sudo_location:/usr/bin/sudo \
-targetnode tgt23ai \
-tgtauth zdmauth \
-tgtarg1 user:opc \
-tgtarg2 identity_file:/home/zdmuser/.ssh/id_rsa \
-tgtarg3 sudo_location:/usr/bin/sudo \
-tdekeystorepasswd \
-tgttdekeystorepasswd \
-backupuser oracleidentitycloudservice/s***aik@oracle.com

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心