云数据迁移最佳实践之Oracle数据迁移到DWS

举报
DGC_1号搬砖人 发表于 2022/09/05 21:22:48 2022/09/05
【摘要】  CDM支持通过CDM将数据从Oracle迁移到数据仓库服务(Data Warehouse Service,简称DWS)中。客户将数据迁移至华为云进行数据清洗、加工、标准化等动作,首先需要将数据搬迁至数据湖底座,数据湖底座数据存储介质之一就是DWS。相对于Oralce,DWS作为分析引擎,可以提供更强的OLAP和关联分析等能力....

云数据迁移最佳实践之Oracle数据迁移到DWS

操作场景

       CDM支持通过CDM将数据从Oracle迁移到数据仓库服务(Data Warehouse Service,简称DWS)中。客户将数据迁移至华为云进行数据清洗、加工、标准化等动作,首先需要将数据搬迁至数据湖底座,数据湖底座数据存储介质之一就是DWS。相对于OralceDWS作为分析引擎,可以提供更强的OLAP和关联分析等能力,详细介绍可见DWS官网https://support.huaweicloud.com/intl/zh-cn/productdesc-dws/dws_01_0007.html Oracle数据搬迁至DWS整个流程如下:

  1. 创建CDM集群并绑定EIP
  2. 创建Oracle连接
  3. 创建DWS连接
  4. 创建迁移作业
  5. 常见问题

前提条件

  1. 购买DWS集群,并且已获取DWS数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有DWS数据库的读、写和删除权限。
  2. 已获取Oracle数据库的IP、数据库名、用户名和密码。
  3. 如果Oracle数据库是在本地数据中心或第三方云上,需要确保Oracle可通过公网IP访问,或者已经建立好了企业内部数据中心到华为云的VPN通道或专线。
  4. 用户已参考管理驱动,上传了Oracle数据库驱动。

创建CDM集群并绑定EIP

    如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为DataArts Studio服务CDM组件使用,参考创建集群创建CDM集群。关键配置如下:

  1. CDM集群的规格,按待迁移的数据量选择,一般选择medium即可,满足大部分迁移场景。
  2. CDM集群所在VPC、子网、安全组,选择与DWS集群所在的网络一致。
  3. 如果安全控制原因不能使用相同子网和安全组,那么需要确保安全组规则能允许CDM访问云搜索服务集群。
  4. CDM集群创建完成后,在集群管理界面选择绑定弹性IP”CDM通过EIP访问Oracle数据源。

    说明:如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。

创建Oracle连接

  1. 单击CDM集群后的作业管理,进入作业管理界面,再选择连接管理新建连接,进入选择连接器类型的界面,如图1所示。

         图选择连接器类型

       

     2. 连接器类型选择“Oracle”后单击下一步,配置Oracle连接参数,参数说明如表1所示。

        图创建Oracle连接

       

1 Oracle连接参数

参数名

说明

取值样例

名称

输入便于记忆和区分的连接名称。

oracle_link

数据库服务器

数据库服务器域名或IP地址。

192.168.0.1

端口

Oracle数据库的端口。

3306

数据库连接类型

Oracle数据库连接类型。

Service Name

数据库名称

要连接的数据库。

db_user

用户名

拥有Oracle数据库的读取权限的用户。

admin

密码

Oracle数据库的登录密码。

-

使用Agent

是否选择通过Agent从源端提取数据。

Agent

单击“选择”,选择连接Agent中已创建的Agent

-

ORACLE版本

默认使用最新版本驱动,若不兼容请尝试其他版本。

高于12.1

驱动版本

需要适配的驱动。

-

一次请求行数

指定每次请求获取的行数。

1000

连接属性

自定义连接属性。

useCompression=true

引用符号

连接引用表名或列名时的分隔符号。默认为空。

'

     3. 单击保存回到连接管理界面。

创建DWS连接

  1. 单击CDM集群后的作业管理,进入作业管理界面,再选择连接管理新建连接,进入选择连接器类型的界面,如图3所示。

        图选择连接器类型

         

     2. 连接器类型选择数据仓库服务(DWS后单击下一步配置DWS连接参数,必填参数如表2所示,可选参数保持默认即可。

2 DWS连接参数

参数名

说明

取值样例

名称

输入便于记忆和区分的连接名称。

dwslink

数据库服务器

DWS数据库的IP地址或域名。

192.168.0.3

端口

DWS数据库的端口。

8000

数据库名称

DWS数据库的名称。

db_demo

用户名

拥有DWS数据库的读、写和删除权限的用户。

dbadmin

密码

用户的密码。

-

使用Agent

是否选择通过Agent从源端提取数据。

Agent

单击“选择”,选择连接Agent中已创建的Agent

-

导入模式

导入数据到DWS时,用户可以指定导入模式:

COPY模式,源数据经过管理节点后,复制到DWSDataNode节点。

UPSERT模式,数据发生主键或唯一约束冲突时,更新除了主键和唯一约束列的其他列数据。

COPY

      3. 单击保存完成创建连接。

创建迁移作业

  1. 选择/文件迁移新建作业,开始创建从Oracle导出数据到DWS的任务。

         图创建OracleDWS的迁移任务

         

源端作业配置

      高级属性里的可选参数一般情况下保持默认既可,详细说明请参见配置常见关系数据库源端参数

目的端作业配置

  • 自动创表:只有当源端和目的端都为关系数据库时,才有该参数;
  • 表名:待写入数据的表名,可以手动输入一个不存在表名,CDM会在DWS中自动创建该表。
  • 存储模式:可以根据具体应用场景,建表的时候选择行存储还是列存储表。一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
  • 扩大字符字段长度:当目的端和源端数据编码格式不一样时,自动建表的字符字段长度可能不够用,配置此选项后CDM自动建表时会将字符字段扩大3倍。
  • 导入前清空数据:任务启动前,是否清除目的表中数据,用户可根据实际需要选择。

    2. 单击下一步进入字段映射界面,CDM会自动匹配源和目的字段,如图5所示。如果字段映射顺序不匹配,可通过拖拽字段调整。

       CDM的表达式已经预置常用字符串、日期、数值等类型的字段内容转换,详细请参见字段转换

       图表到表的字段映射

     

     3.  单击下一步配置任务参数,一般情况下全部保持默认即可。该步骤用户可以配置如下可选功能:  

  • 作业失败重试:如果作业执行失败,可选择是否自动重试,这里保持默认值不重试
  • 作业分组:选择作业所属的分组,默认分组为“DEFAULT”。在CDM作业管理界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。
  • 是否定时执行:如果需要配置作业定时自动执行,请参见配置定时任务。这里保持默认值
  • 抽取并发数:设置同时执行的抽取任务数。可适当调大参数,提升迁移效率。
  • 是否写入脏数据:表到表的迁移容易出现脏数据,建议配置脏数据归档。
  • 单击保存并运行,回到作业管理界面,在作业管理界面可查看作业执行进度和结果。

     4.  作业执行成功后,单击作业操作列的“历史记录”,可查看该作业的历史执行记录、读取和写入的统计数据。在历史记录界面单击“日志”,可查看作业的日志信                息。

常见问题

  1. 效率性能问题      迁移效率主要取决于CDM和数据源之间的网络状况,数据源性能等,具体可以参考https://support.huaweicloud.com/pwp-cdm/cdm_03_0001.html 进行作业的基础性能调优;
  2. 功能问题

         1)  作业状态一直处于Booting状态,长时间未运行。针对Oracle2DWS作业链路,导致该问题的常见情况有如下两种:

             a. 作业抽取并发数设置大于1,源端表数据量较大,在根据源端抽取分区字段发送查询sql进行求最大值和最小值(select max/min抽取分区字段 from

                  整表名)时卡住,导致CDM作业卡在booting状态;

             解决措施1:将作业抽取并发数设置为1,使用单并发对源端表数据进行抽取,该方式会降低作业运行时的抽取效率;

            解决措施2:将作业抽取并发数设置为1,同时对作业进行拆分,利用源端作业配置的where子句来将作业拆分成多个子作业。如源表存在id字段,则id值范围

                                为1-10000000,则可以拆分成10个子作业,如子作业1的源端作业配置where子句配置 id >= 1 and id <= 1000000,同时将目的端作业配置的

                                入前准备语句配置成delete from 完整表名 where id >= 1 and id <= 1000000 (该配置可以保证作业失败后直接重跑作业不产生垃圾数据)。该方式

                                 可以同时运行多个子作业,解决单并发带来的效率影响。

                             


          b. 目的端作业配置导入开始前设置为清除全部数据,作业在执行抽取数据之前,会先提交sqltruncate table 完整表名)到DWS端,如果DWS目的端表数据过

              大或者存在锁表等原因导致sql执行阻塞,也会造成CDM作业处于booting状态,该种情况需要联系DWS侧研发人员一同确认。CDM侧可在对应CDM作业日 

              志查找“Cut-off table”关键字,看其是否卡住的时间过长。

       2)  作业运行失败,报错timed outcdm在和数据源进行sql交互时,建立连接和执行查询sql等回话都有默认的客户端超时参数,当相关操作在超时范围内没有执

            行完成时,就会产生超时异常导致作业运行失败,具体解决方案请参考https://support.huaweicloud.com/intl/zh-cn/cdm_faq/cdm_01_1107.html

       3)作业运行失败,报错ORA-01555,原因是在cdm查询Oracle源端数据时,源端表数据块发生了变化导致,具体解决方案可以

             https://support.huaweicloud.com/intl/zh-cn/cdm_faq/cdm_01_1102.html

       4)作业运行失败,报错value too long for type xxx,原因是源端数据迁移到对应目的端列的时候,数据长度超过了列的存储长度,具体解决方案可以参考https://support.huaweicloud.com/intl/zh-cn/cdm_faq/cdm_01_0119.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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