
# Oracle数据迁移到DWS
#### 操作场景
CDM支持表到表的迁移，本章节介绍如何通过CDM将数据从Oracle迁移到数据仓库服务（Data Warehouse Service，简称DWS）中，流程如下：
1. [创建CDM集群并绑定EIP]
2. [创建Oracle连接]
3. [创建DWS连接]
4. [创建迁移作业]
 
#### 前提条件
- 已购买DWS集群，并且已获取DWS数据库的IP地址、端口、数据库名称、用户名、密码，且该用户拥有DWS数据库的读、写和删除权限。
- 已获取Oracle数据库的IP、数据库名、用户名和密码。
- 如果Oracle数据库是在本地数据中心或第三方云上，需要确保Oracle可通过公网IP访问，或者已经建立好了企业内部数据中心到华为云的VPN通道或专线。
- 已在CDM集群的"作业管理 \> 连接管理 \> 驱动管理"页面，上传了Oracle数据库驱动。
 
 #### 创建CDM集群并绑定EIP
1. 如果是独立CDM服务，参考[创建集群](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0018.html)创建CDM集群；如果是作为DataArts Studio服务CDM组件使用，参考[创建集群](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0576.html)创建CDM集群。
   
   关键配置如下：
   - CDM集群的规格，按待迁移的数据量选择，一般选择cdm.medium即可，满足大部分迁移场景。
   
   - CDM集群所在VPC、子网、安全组，选择与DWS集群所在的网络一致。
   
   - 如果安全控制原因不能使用相同子网和安全组，那么需要确保安全组规则能允许CDM访问云搜索服务集群。
   
   
   
   
2. CDM集群创建完成后，在集群管理界面选择"绑定弹性IP"，CDM通过EIP访问Oracle数据源。 
   ![](https://support.huaweicloud.com/usermanual-cdm/public_sys-resources/note_3.0-zh-cn.png)
   如果用户对本地数据源的访问通道做了SSL加密，则CDM无法通过弹性IP连接数据源。
   
   
 
 #### 创建Oracle连接
1. 单击CDM集群后的"作业管理"，进入作业管理界面，再选择"连接管理 \> 新建连接"，进入选择连接器类型的界面，如[图1]所示。
   
   图1选择连接器类型   
   ![](https://support.huaweicloud.com/usermanual-cdm/zh-cn_image_0000001448285829.png "点击放大")
   
   
2. 连接器类型选择"Oracle"后单击"下一步"，配置Oracle连接参数，参数说明如[表1]所示。
   
   图2创建Oracle连接   
   ![](https://support.huaweicloud.com/usermanual-cdm/zh-cn_image_0000001223799830.png)
    表1Oracle连接参数 
   | 参数名      | 说明                      | 取值样例                |
   |:---|:---|:---|
   | 名称       | 输入便于记忆和区分的连接名称。         | oracle_link         |
   | 数据库服务器   | 数据库服务器域名或IP地址。          | 192.168.0.1         |
   | 端口       | Oracle数据库的端口。           | 3306                |
   | 数据库连接类型  | Oracle数据库连接类型。          | Service Name        |
   | 数据库名称    | 要连接的数据库。                | db_user             |
   | 用户名      | 拥有Oracle数据库的读取权限的用户。    | admin               |
   | 密码       | Oracle数据库的登录密码。         | -                   |
   | 使用Agent  | Agent功能待下线，无需配置。        | -                   |
   | Agent    | Agent功能待下线，无需配置。        | -                   |
   | ORACLE版本 | 默认使用最新版本驱动，若不兼容请尝试其他版本。 | 高于12.1              |
   | 驱动版本     | 需要适配的驱动。                | -                   |
   | 一次请求行数   | 指定每次请求获取的行数。            | 1000                |
   | 连接属性     | 自定义连接属性。                | useCompression=true |
   | 引用符号     | 连接引用表名或列名时的分隔符号。默认为空。   | '                   |
      
   
   
3. 单击"保存"回到连接管理界面。
 
 #### 创建DWS连接
1. 单击CDM集群后的"作业管理"，进入作业管理界面，再选择"连接管理 \> 新建连接"，进入选择连接器类型的界面，如[图3]所示。
   
   图3选择连接器类型   
   ![](https://support.huaweicloud.com/usermanual-cdm/zh-cn_image_0000001308990117.png "点击放大")
   
   
2. 连接器类型选择"数据仓库服务（DWS）"后单击"下一步"配置DWS连接参数，必填参数如[表2]所示，可选参数保持默认即可。
   
    表2DWS连接参数 
   | 参数名     | 说明                                                           | 取值样例        |
   |:---|:---|:---|
   | 名称      | 输入便于记忆和区分的连接名称。                                              | dwslink     |
   | 数据库服务器  | DWS数据库的IP地址或域名。                                              | 192.168.0.3 |
   | 端口      | DWS数据库的端口。                                                   | 8000        |
   | 数据库名称   | DWS数据库的名称。                                                   | db_demo     |
   | 用户名     | 拥有DWS数据库的读、写和删除权限的用户。                                        | dbadmin     |
   | 密码      | 用户的密码。                                                       | -           |
   | 使用Agent | Agent功能待下线，无需配置。                                             | -           |
   | Agent   | Agent功能待下线，无需配置。                                             | -           |
   | 导入模式    | COPY模式：将源数据经过DWS管理节点后复制到数据节点。如果需要通过Internet访问DWS，只能使用COPY模式。 | COPY        |
      
   
   
3. 单击"保存"完成创建连接。
 
 #### 创建迁移作业
1. 选择"表/文件迁移 \> 新建作业"，开始创建从Oracle导出数据到DWS的任务。 
   图4创建Oracle到DWS的迁移任务   
   ![](https://support.huaweicloud.com/usermanual-cdm/zh-cn_image_0000001147281782.jpg "点击放大")
   - 作业名称：用户自定义便于记忆、区分的任务名称。
   
   - 源端作业配置
     - 源连接名称：选择[创建Oracle连接]中的"oracle_link"。
     
     - 模式或表空间：待迁移数据的数据库名称。
     
     - 表名：待迁移数据的表名。
     
     - 高级属性里的可选参数一般情况下保持默认即可。
      
   
   - 目的端作业配置
     - 目的连接名称：选择[创建DWS连接]中的连接"dwslink"。
     
     - 模式或表空间：选择待写入数据的DWS数据库。
     
     - 自动创表：只有当源端和目的端都为关系数据库时，才有该参数。
     
     - 表名：待写入数据的表名，可以手动输入一个不存在表名，CDM会在DWS中自动创建该表。
     
     - 存储模式：可以根据具体应用场景，建表的时候选择行存储还是列存储表。一般情况下，如果表的字段比较多（大宽表），查询中涉及到的列不多的情况下，适合列存储。如果表的字段个数比较少，查询大部分字段，那么选择行存储比较好。
     
     - 扩大字符字段长度：当目的端和源端数据编码格式不一样时，自动建表的字符字段长度可能不够用，配置此选项后CDM自动建表时会将字符字段扩大3倍。
     
     - 导入前清空数据：任务启动前，是否清除目的表中数据，用户可根据实际需要选择。
      
   
   
   
   
2. 单击"下一步"进入字段映射界面，CDM会自动匹配源和目的字段，如[图5]所示。
   
   - 如果字段映射顺序不匹配，可通过拖拽字段调整。
   
   - CDM的表达式已经预置常用字符串、日期、数值等类型的字段内容转换，详细请参见[字段转换](https://support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_0012.html)。
   
   
   图5表到表的字段映射   
   ![](https://support.huaweicloud.com/usermanual-cdm/zh-cn_image_0000001162544976.png "点击放大")
   
   
3. 单击"下一步"配置任务参数，一般情况下全部保持默认即可。 
   该步骤用户可以配置如下可选功能：
   - 作业失败重试：如果作业执行失败，可选择是否自动重试，这里保持默认值"不重试"。
   
   - 作业分组：选择作业所属的分组，默认分组为"DEFAULT"。在CDM"作业管理"界面，支持作业分组显示、按组批量启动作业、按分组导出作业等操作。
   
   - 是否定时执行：如果需要配置作业定时自动执行，可打开此配置。这里保持默认值"否"。
   
   - 抽取并发数：设置同时执行的抽取任务数。可适当调大参数，提升迁移效率。
   
   - 是否写入脏数据：表到表的迁移容易出现脏数据，建议配置脏数据归档。
   
   - 作业运行完是否删除：这里保持默认值"不删除"。
    
   
   
4. 单击"保存并运行"，回到作业管理界面，在作业管理界面可查看作业执行进度和结果。
5. 作业执行成功后，单击作业操作列的"历史记录"，可查看该作业的历史执行记录、读取和写入的统计数据。 
   在历史记录界面单击"日志"，可查看作业的日志信息。
   
   
![](https://support.huaweicloud.com/usermanual-cdm/public_sys-resources/note_3.0-zh-cn.png)
如遇目的端写太久导致迁移超时，请减少Oracle连接器中"一次请求行数"参数值的设置。
