Oracle到国产数据库DM的迁移案例

举报
阿依纳伐 发表于 2020/12/25 10:37:51 2020/12/25
【摘要】 对于达梦数据库,我在19年之前还没有听过,第一次听到达梦,金仓数据的时候还是我们打算开始做鲲鹏专家服务的技术研讨会上,数据库专家在说国产数据库的提到达梦和金仓,感觉完全没听过,个人最早接触数据库的时候是在2011年,入职第一家公司,linux运维, C开发,数据库安装,sql表设计,存储过程编写,当时记得写了将近上万行,几百个存储过程,其实个人的逻辑思维一致不好,可以说C代码基础也很差,在学SQl

对于达梦数据库,我在19年之前还没有听过,第一次听到达梦,金仓数据的时候还是我们打算开始做鲲鹏专家服务的技术研讨会上,数据库专家在说国产数据库的提到达梦和金仓,感觉完全没听过,个人最早接触数据库的时候是在2011年,入职第一家公司,linux运维, C开发,数据库安装,sql表设计,存储过程编写,当时记得写了将近上万行,几百个存储过程,其实个人的逻辑思维一致不好,可以说C代码基础也很差,在学SQl的过程中才找到了适合自己的编程习惯,后来再写脚本什么的都易如反掌了,当初一心想干DBA,后来因为生活所迫,一心想回西安发展 , 发现西安DBA的机会很少,就转投了嵌入式linux开发,再到linux运维,直到去年的鲲鹏项目成立,才再次接触到数据库;下来一查才知道,除了mysql,oracle,原来国产的数据库已经发展如此迅猛了。

随着案例去IOE的口号提出,中兴与华为相继被制裁,国产化的呼声达到了十年来最激烈的一次,特别是华为在推出了鲲鹏生态后,国产化的活动,信创的字眼,越来越频繁的出现在朋友圈,技术贴,论坛,博客中,越来越多的各种线下技术论坛如雨后春笋般涌现;

第一次接触达梦也不例外,是从公众号的线上论坛中关注到了达梦的技术分享论坛,主要还是抱着去学习的心态,因为工作中确实有很多国产化数据库搬迁的工作;逐渐了解到达梦除了数据库产品,也有自己的大数据产品DMBDP;启云云平台,还有自己的图数据库,同时也积极打造各种周边产品,主要为工具与云平台;

 后来因为工作交流,有幸去达梦武汉研发中心做过一次技术交流,更加深入的了解到,达梦(驶达梦想)公司由华为科技大学老师冯裕才(现任达梦数据库董事长)带领其学生创建,2000年,创建了国内第一个数据库公司,2001年又创建了上海达梦(当前达梦主研发中心);目前中国电子(CEC)与中国软件均有控股;目前达梦全国总共1000人左右,研发人员占80%左右,国产数据库的NO.1,市场份额占到60%;也是核高基的核心组成员;目前达梦在银行,金融等高要求的场景下份额逐年递增,也足以说明未来国产化数据库的市场会越来越大。

Oracle迁移达梦案例

说完了背景,就实际跟大家分享下我们从Oracle签到到达梦的一个实例吧:

某信息中心平台原数据库系统为6u100g单机部署的Oracle数据库,随着业务系统的发展和用户数量的增多,旧平台系统已经不能适应满足企业在扩展性、灵活性、安全性、经济型和自主性方面的需求。业务系统数字化转型迫在眉睫,急需能够满足企业业务新需求的替代方案。

 在《国家信息化发展战略纲要》等政策的推动下,响应国家信息化创新,顺应国产化潮流,选定华为云鲲鹏平台作为替代方案。

迁移架构图如下:

1.png

 

Oracle与达梦数据库的对比:

2.png

Oracle与DM在数据类型、函数和对象类型方面兼容度高达95%

仅部分数据类型名称、函数名称和Oracle有差异

异构数据库迁移流程

3.png

 

数据库的迁移流程都是大同小异,最主要的还是迁移的调研,深入调研客户所有到的字典,对象,特性,以及部署方式,数据量大小来设计迁移方案,相对来说达梦的为迁移Oracle所提供的工具还是很好用的。

Oracle-DM8数据类型差异对比

    需求调研阶段,数据类型差异对比还是非常重要和繁琐的,列一篇我们整理的给大家分享下:

 

4.png

5.png

6.png

数据库部署方式与数据量

客户源库为6u100g单机部署的Oracle,是多系统多用户共享数据库系统,本次迁移数据量7G,涉及数据库系统17个。

综合客户需求和性能测试结果,决定采用主备方式部署达梦数据库

 

7.png

主备实现原理:

将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。

由数据守护进程监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。

系统结构参考右图。主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程、监视器组成。

 

达梦数据库迁移工具DTS

 

8.png

达梦数据库迁移工具DTS提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DTS工具采用向导方式引导用户通过简单步骤完成迁移过程。达梦数据库迁移工具DTS提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DTS工具采用向导方式引导用户通过简单步骤完成迁移过程。

  • 基于JDBC接口对数据进行查询和传输
  • 支持表、视图、序列、索引、约束等对象的迁移
  • 自动完成数据类型兼容性的转换

达梦数据库实时同步软件DMHS

9.png

达梦数据实时同步软件DMHS是达梦公 司推出的新一代支持异构环境的高性能、高可靠、高可扩展数据库实时同步系统,该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台,支持强大而灵活的拓扑结构,能以极少的系统开支实现秒级数据实时同步

基于日志的结构化数据同步技术

以数据库事务为最小复制单位,确保复制数据的完整性和一致性

使用检查点机制实现断点续传,保障数据不丢失

自带数据比对功能

采用并行处理技术实现大批量数据的实时复制,数据同步高效

DTS与DMHS两个工具功能对比

 

10.png

本次的数据库迁移工作,根据客户数据量大小、客户可接受的停机时间等相关因素综合考虑,达梦数据库迁移工具DTS可以完全满足本次迁移。

 迁移实施6步骤

11.png

过程中遇到的几个问题

问题现象

Oracle下执行正常的SQL语句在达梦中执行报错

12.png

 

select * from (SELECT * FROM T_SCHEDULE s JOIN CENTITIP.F_USERINFO us ON us.USER_CODE = s.USER_CODE JOIN CENTITIP.F_UNITINFO un ON un.UNIT_CODE = us.PRIMARY_UNIT WHERE 1 = 1 AND data_valid_flag = '1'  AND s.USER_CODE !=  '255' AND s.USER_CODE !=  '1515' ORDER BY un.unit_order ASC, us.user_order ASC ,s.THEME ASC ) where rownum <= 10

根因分析

USER_CODE在达梦里是关键字,在Oracle中不是,不能定义为字段名

解决方案

配置文件中配置EXCLUDE_RESERVED_WORDS=?

屏蔽USER_CODE 这个关键字 

问题现象

手工修改后的物化视图语句执行报错

refresh with primary key force start with sysdate + 0  next to_date(concat(to_char(sysdate + 1,'dd-mm-yyyy'),'10:25:00'),'dd-mm-yyyy hh24:mi:ss’)

disable query rewrite

根因分析

… …

达梦不支持含有大字段及对象类型的物化视图

解决方案

留个悬念,大家自行脑补思考下,哈哈

 

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。