注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
从内部部署 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 进行了定制。
以下是源和目标环境的属性和详细信息。
目标
- 使用 ZDM 工具迁移到 Oracle Cloud Infrastructure (OCI)。
先决条件
-
源数据库应为归档日志模式。
-
如果源数据库位于 12c 发行版 2 及更高版本,则需要启用透明数据加密 (Transparent Data Encryption,TDE)。确保将
WALLET_TYPE
设置为AUTOLOGIN
或PASSWORD
。 -
源数据库和目标数据库上的参数
DB_UNIQUE_NAME
必须不同。 -
应在迁移之前创建目标数据库。
-
在目标服务器上预配与源数据库主目录版本相同的 Oracle 主目录。
任务 1:准备和安装 ZDM 服务器
-
为 ZDM 软件安装预配专用计算主机。安装 ZDM 软件的主机称为 ZDM 服务主机。在主机上必须满足以下先决条件:
- Oracle Linux 8 和引导卷大小为 200GB。
- 100GB 可用存储空间。
- 没有运行 Oracle Grid Infrastructure。
- 可以连接到源数据库和目标数据库(服务器)。
-
使用 putty 连接到 ZDM 主机。
-
运行以下命令以扩展文件系统,使 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% /
-
使用以下命令以 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/
-
使用以下命令以 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
-
下载 ZDM 软件版本 21.5,并将 zip 文件复制到 ZDM 主机到
/home/zdmuser/zdminstall/
目录。使用以下命令以 root 用户身份将 zip 文件的所有者更改为zdmuser
。[root@zdm ~]# chown zdmuser:zdm /home/zdmuser/zdminstall/zdm21.5.zip
-
使用以下命令将 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...
-
运行以下命令以启动 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
-
运行以下命令为
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:
-
从用户详细信息页为您的 OCI 用户创建验证令牌。
单击授权标记、生成标记,输入说明,然后单击生成标记。
注:请将此标记复制到您的记录,因为不会再次显示它。
-
运行以下命令以
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
-
运行以下命令将 API 签名公钥从
zdmhost
上载到云租户中的 OCI 用户。[zdmuser@zdmhost ~]$ cat /home/zdmuser/.oci/oci_api_key_public.pem -----BEGIN PUBLIC KEY----- ********** -----END PUBLIC KEY-----
转到 OCI 控制台,导航到用户详细信息页面,单击 API 密钥和添加 API 密钥。选择粘贴公钥,输入上述命令的输出,然后单击添加。
-
运行以下命令,使用 OCI CLI 或 OCI 控制台在 OCI 租户中创建标准 OCI Object Storage 桶。
[zdmuser@zdm ~]$ oci os bucket create --compartment-id ocid1.compartment.oc1.....lh4lfamxdrpuxg3x……… --name zdmbucket
-
从
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
-
通过以 root 用户身份将 zdmhost 上的主机名、IP 和 FQDN 复制到
/etc/hosts
,将源数据库和目标数据库的主机名解析为 zdmhost。
任务 2:在源数据库和目标数据库中运行预检查
-
运行以下命令可在目标 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:
-
运行以下命令以验证数据库主目录的创建。
[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:准备响应文件
-
将位于
$ZDM_HOME/rhp/zdm/template/
下的zdmhost
上的模板响应文件复制到其他目录。 -
根据源和目标环境设置修改复制的响应文件。以下是共享的响应文件样例,其中包含用于完成升级的迁移的最少参数。
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
相关链接
确认
- 作者 — Snehaa Patnaik(实施专家—自定义、第三方、VM 数据库和应用)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Migrate from an On-Premises 19c non-Container Database to Oracle Database 23ai Container Database
G25679-01
January 2025
Copyright ©2025, Oracle and/or its affiliates.