异构迁移Oracle的前世今生——HuaweiCloud+UGO+DRS(一)

简介: 异构迁移Oracle的前世今生——HuaweiCloud+UGO+DRS

一、数据库国产化背景

Oracle仍然是迄今为止最伟大的数据库,我们这一代人见过或者听说的Oracle版本是8i,9i,发布日期为1998年和2001年,Oracle最早的发布日期可以追溯到上个世纪60~70年代,那时候的甲骨文公司叫做RSi(Relational Software,Inc),Oracle数据库从功能简单到复杂,从不稳定到稳定经历了时间的沉淀。

盖国强盖老师称作“国产数据库的元年”是2019年,国产数据库起步虽晚,但是也已经有40年左右的历史,随着近年来国家的引导、支持和扶植,互联网企业以高度的热情入局,新兴的独立数据库创业企业参与,头部科技企业的加入,加上本土数据库的庞大用户基数,相信国产数据库的发展终有一天能后来居上,从试用,能用,到敢用,易用,好用的转变。

随着2019年“贸易战”的影响,多项技术被“卡脖子”,尤其是芯片行业,造成国内企业无芯可用的局面。作为三大基础软件之一的数据库,同样也存在“卡脖子”的问题,在国家政策的引导下,越来越多的企业入局,追求自主可控,摆脱国外垄断的局面。

另外,在很多细分场景上,单独的Oracle已经无法满足国内独特业务场景的需求,国产数据库在分布式、云原生相继发力,目前在金融、互联网、运营商等行业已经取得不错的成绩,甚至打开了国外的市场。

去IOE的口号近年来一直在被提到,随着国产数据库浪潮的袭来,去IOE中的“Oracle”已经被许多大中小型企业提上日程,有一个比较共性的问题是,越是重度应用Oracle,使用特性越多的用户,往往是迁移复杂度越大。举个例子,Oracle的PL/SQL功能,随着时间的积累有的客户PL/SQL的代码量达到百万甚至千万级别,这个量级异构迁移的代码改造量所花费的人力物力是很多客户无法接受的,仅这一个功能就使许多想去“O”的用户望而却步。当前的去“O”形势是八仙过海各显神通,并没有一款很好的工具能够统一迁移流程,华为云近期推出了两款产品UGO+DRS,相信可以帮助用户完成并简化去“O”的过程。

二、什么是UGO,DRS,GaussDB

数据库和应用迁移 UGO(Database and Application Migration UGO,简称UGO)是专注于异构数据库结构迁移和应用SQL转换的专业云服务。通过UGO的预迁移评估、自动化语法转换,帮助用户提前识别迁移风险,提升迁移效率,最大化降低用户的数据库迁移成本。

数据复制服务(Data Replication Service,简称为DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。DRS围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本。

GaussDB(for openGauss)是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。同时华为开源openGauss单机主备社区版本,鼓励更多伙伴、开发者共同繁荣中国数据库生态。

华为凭借UGO+DRS共同在获得了信通院在商业教据库迁移方面的设定行业标准中最高级别成绩

三、迁移测试

本次测试模拟生产环境中的Oracle数据库到华为云GaussDB(for openGauss)的异构迁移,使用UGO来迁移对象,使用DRS来迁移并实时同步数据,并对迁移过程及数据进行评估和校验。

1. 架构图

7aa47d6466df6cd5b2d1e004358ffd6f_20211203-cadd558b-a580-4528-8f91-d2bec332c6c2.png

测试架构图如上,源端为安装在Docker中的Oracle 19C,目标端为华为云上购买的GaussDB(for openGauss)实例,UGO及DRS等都是通过华为云购买,直接在网页控制台中操作。

2. 搭建源端环境

打包镜像

[root@ecs-ugo ~]# git clone https://github.com/oracle/docker-images.git
[root@ecs-ugo ~]# cd docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
[root@ecs-ugo 19.3.0]# ls
checkDBStatus.sh  Checksum.ee   createDB.sh    db_inst.rsp  installDBBinaries.sh          relinkOracleBinary.sh  runUserScripts.sh  setupLinuxEnv.sh
checkSpace.sh     Checksum.se2  dbca.rsp.tmpl  Dockerfile   LINUX.X64_193000_db_home.zip  runOracle.sh           setPassword.sh     startDB.sh
[root@ecs-ugo 19.3.0]# pwd
/root/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0
[root@ecs-ugo 19.3.0]# cd ..
[root@ecs-ugo dockerfiles]# ./buildContainerImage.sh --help
./buildContainerImage.sh: illegal option -- -
Usage: buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x] [-i] [-o] [container build option]
Builds a container image for Oracle Database.
Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  18.4.0  19.3.0  21.3.0  
   -t: image_name:tag for the generated docker image
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -i: ignores the MD5 checksums
   -o: passes on container build option
* select one edition only: -e, -s, or -x
LICENSE UPL 1.0
Copyright (c) 2014,2021 Oracle and/or its affiliates.
[root@ecs-ugo dockerfiles]# ./buildContainerImage.sh -v 19.3.0 -i -e
[root@ecs-ugo dockerfiles]# docker image ls
REPOSITORY                                       TAG         IMAGE ID       CREATED       SIZE
oracle/database                                  21.3.0-ee   0855ee2749de   9 days ago    7.94GB
swr.cn-north-4.myhuaweicloud.com/oracle/oracle   21.3.0      0855ee2749de   9 days ago    7.94GB
oracle/database                                  19.3.0-ee   cc930c1e5ee2   10 days ago   6.53GB
swr.cn-north-4.myhuaweicloud.com/oracle/oracle   19.3.0      cc930c1e5ee2   10 days ago   6.53GB
swr.cn-north-4.myhuaweicloud.com/oracle/oracle   19c         cc930c1e5ee2   10 days ago   6.53GB
oraclelinux                                      7-slim      078d6e3ae75e   5 weeks ago   132MB

启动Oracle 19c

docker run --name oracle21c -d \
-p 15221:1521  \
-e ORACLE_SID=LEE \
-e ORACLE_PDB=oracle19c \
-e ORACLE_PWD=Enmotech \
-e ORACLE_CHARACTERSET=ZHS16GBK \
swr.cn-north-4.myhuaweicloud.com/oracle/oracle:19.3.0

测试连接

[root@ecs-ugo ~]# docker exec -it oracle19c bash
[oracle@666d4b0868ff ~]$ export ORACLE_SID=LEE
[oracle@666d4b0868ff ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 3 05:35:53 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORACLE19C                      READ WRITE NO
SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@666d4b0868ff ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-DEC-2021 05:36:29
Copyright (c) 1991, 2019, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                03-DEC-2021 03:31:42
Uptime                    0 days 2 hr. 4 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/666d4b0868ff/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=666d4b0868ff)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/LEE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "LEE" has 1 instance(s).
  Instance "LEE", status READY, has 1 handler(s) for this service...
Service "LEEXDB" has 1 instance(s).
  Instance "LEE", status READY, has 1 handler(s) for this service...
Service "d16cf25e0b510cc0e053020011ace43e" has 1 instance(s).
  Instance "LEE", status READY, has 1 handler(s) for this service...
Service "oracle19c" has 1 instance(s).
  Instance "LEE", status READY, has 1 handler(s) for this service...
The command completed successfully

3. 购买目标端 GaussDB for openGauss

控制台选取云数据库GaussDB

78cec6048380e6737900f8c9f917f3b9_20211203-04737835-2b17-4c34-af22-d50aa7d67269.png

在“实例管理”页面,单击“购买数据库实例”

ea9634665c8d5c09da8cda684dd36b30_20211203-d513e3d4-a9bf-4fa6-8b11-7aef2a26ad12.png

在创建实例页面,选择计费模式,填写并选择实例相关信息后,单击“立即购买”。

1e9fcfa6fa38947926082950260de624_20211203-57343306-4ee2-469f-9639-f968f4d8af46.png

86ea928e6dfc90e3dff08934c55d1f08_20211203-2111d4d0-7423-4cd2-8770-a32963c555f1.png

提交

9ecdff14450b5ebf995633e9d07398bb_20211203-ff74bd53-9f8a-4d0d-be8d-320000d31f2c.png


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
25天前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
36 0
|
4月前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
73 0
|
Oracle 关系型数据库 分布式数据库
如何从Oracle迁移到PolarDB(ADAM)(二)
如何从Oracle迁移到PolarDB(ADAM)(二)
178 0
|
Oracle 关系型数据库 数据库
Oracle实例迁移_真实场景实操
Oracle实例迁移_真实场景实操
100 0
|
Oracle 关系型数据库 数据库
《ORACLE数据库和应用异构 迁移最佳实践》电子版地址
ORACLE数据库和应用异构 迁移最佳实践
70 0
《ORACLE数据库和应用异构 迁移最佳实践》电子版地址
|
存储 Oracle 关系型数据库
异构迁移Oracle的前世今生——HuaweiCloud+UGO+DRS(三)
异构迁移Oracle的前世今生——HuaweiCloud+UGO+DRS
168 0
异构迁移Oracle的前世今生——HuaweiCloud+UGO+DRS(三)
|
4月前
|
Oracle 关系型数据库 分布式数据库
Oracle迁移PolarDB遇到的中文排序兼容
本文介绍从Oracle迁移到PolarDB过程中常遇到的中文排序问题的解决方案。
123 0
Oracle迁移PolarDB遇到的中文排序兼容
|
存储 Oracle 关系型数据库
阿里云如何打破Oracle迁移上云的壁垒
2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲。Oracle是指“数据库管理系统”,面对Oracle迁移上云的壁垒,阿里云如何能够打破它呢?本文提出了Oracle 到云数据库PPAS迁移的方案,这种迁移方案为什么比Oracle到 MySQL系列的迁移容易推动呢?答案即将揭晓。
10605 0
|
1月前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
1月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多