
# 步骤三：迁移验证
#### 前提条件
存在已经完成迁移的项目。
#### 操作步骤
1. [登录UGO控制台。](https://console.huaweicloud.com/ugo/#/console/dashboard)
2. 单击左侧导航栏"结构迁移 \> 对象迁移"，显示迁移项目列表。
3. 单击待迁移项目的"操作 \> 迁移"，进入迁移项目，选择"迁移验证"页签。 
   图1迁移任务   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656791519.png)
   
   
4. 进入"迁移任务"页面，单击"迁移验证配置"，弹出"迁移验证配置"页面： 
   图2迁移验证配置   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002629387328.png)
   - 转换失败对象是否迁移：
     - 不勾选：默认"不勾选""迁移转换失败对象"，转换失败对象不参与迁移任务。
     
     - 勾选："勾选""迁移转换失败对象"，转换失败对象参与迁移任务。
      
   
   - 用户连接：
     - 默认"勾选""将数据库连接用户设置为执行GaussDB脚本的用户"，因此各个schema的owner为数据库连接用户。若"勾选""将对象所有者设置为执行GaussDB脚本的用户"，则各个schema的owner为schema自己。
      
   
   - 修改用户密码：
     - 当待转换对象中包含USER对象时，需要为用户设置统一的密码，设置的密码将用于目标数据库上创建所有用户对象，迁移后需要逐一手动修改用户的密码。
       ![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
       - 密码创建完成后，在迁移过程中不支持再次修改。
       
       - 当源库为 PostgreSQL 和 openGauss 时，USER 对象只是 ROLE 对象的一种特例。上述语境中的 USER 对象，实际指代 ROLE 对象。即如果要转换 ROLE 对象，也需要设置用户密码。
       
       - 仅支持在"待启动"、"暂停"和"迁移完成"三个状态下进行设置。
         
      
   
   
   
   
5. 单击"启动"开始进行迁移验证，开始将对象迁移至目标数据库中。 
   - 迁移成功：进入"对象列表"页面，"迁移状态"标记为"成功"，可登录目标库查看迁移对象。
   
   - 迁移失败：进入"对象列表"页面，"迁移状态"标记为"失败"，单击失败对象后的"对象校正"，跳转"基本信息"页面，查看该类对象的具体迁移情况，也可单击修改并直接进行迁移验证，具体参考[5]，重新进行单条对象的手工修改并迁移验证。
   
   - 查看空存储过程：当源库为Oracle时，可查看失败的对象列表和失败次数。
   
   
   
   
6. 迁移完成后，单击"迁移报告"，弹出"迁移报告"页面： 
   图3迁移报告   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656671565.png)
   - "最近一次迁移报告"页面，显示最近一次迁移项目的详细信息，包括对象类型、总数、迁移成功、迁移失败、剩余量等信息。当在"迁移验证配置"中设置了不迁移转换失败对象时，还会展示"转换失败不迁移"，以及迁移成功率等信息。
   
   - "迁移历史"页面，以倒序方式显示迁移历史记录，包括序号、总数、迁移成功、迁移失败、迁移状态、开始时间、结束时间，可以单击"操作\>详情"查看详细信息。
     - 单击"详情"，显示对象类型、总数、迁移成功、迁移失败等信息。可以查看各对象类型的详细信息。
     
     - 单击对象类型后的"详情"，显示Schema、对象名称、对象类型、迁移状态等信息。可以依据具体对象名称搜索，也可以查看各Schema的详细信息。
     
     - 单击对象后的"详情"，显示目标库详细代码信息以及迁移报错信息。
      
   
   - 单击"下载报告"，选择所需报告单击"下载"，下载至本地供用户分析。子对象的相关数据不会统计在迁移报告中。
     - 迁移统计报告：该报告简要介绍了迁移和验证对象的状态。
     
     - 迁移错误报告：该报告介绍了对象迁移失败的详情，包括每个对象的状态、迁移语句和错误信息。
     
     - 迁移错误报告（匿名化）：该报告介绍了对象迁移失败的详情，包括每个对象的状态、迁移语句、错误信息，但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。
     
     - 迁移全量报告：该报告介绍了对象迁移的详情，包括每个对象的状态、迁移语句和错误信息。
     
     - 迁移全量报告（匿名化）：该报告介绍了对象迁移的详情，包括每个对象的状态、迁移语句和错误信息。但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。
      
    
   
   
7. 迁移失败对象全部修改完并迁移到目标数据库，迁移任务完成。
 
#### 批量语句更新
1. [登录UGO控制台。](https://console.huaweicloud.com/ugo/#/console/dashboard)
2. 单击左侧导航栏"结构迁移 \> 对象迁移"，显示迁移项目列表。
3. 单击待迁移项目的"操作 \> 迁移 "，进入迁移项目，选择"迁移验证"页签，进入"对象列表"页面。
4. 单击"批量语句更新"，进入批量修改页面。 
   图4批量语句更新   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626392256.png)
   
   
5. 单击"搜索结果"页签右侧操作列"查看详情"，进入对象详细信息页面。 
   显示 Schema 名称、对象类型、对象名称、拆分对象名称、转换状态和迁移状态。
   
   
6. 可查看转换或迁移报错信息。若有修改建议，也同时展示。 
   - "转换状态"为"失败"时，显示"转换错误"。
   
   - "迁移状态"为"失败"时，显示"迁移错误"。
   
   
   图5对象详细信息   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656791521.png)
   
   
7. 选定待修改 SQL 关键词或错误字符串后，返回"批量修改"页面，将信息填入对应的位置。 
   图6批量修改   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626552172.png)
   表1批量搜索关键词参数说明 
   | **参数** | **是否必选** | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|:---|
   | 搜索模式   | 是        | - 正常：简单搜索文本类型。  - 正则表达式：正则表达式搜索文本类型。 说明： - 正则表达式的错误使用可能会对 SQL 进行不可预知的更改，请慎用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 错误字符串  | 否        | 可对"查看详情"中"转换/迁移错误"提示信息的内容进行搜索。 - 多个"错误字符串"之间是"与"的关系。  - "错误字符串"最大输入长度为 255 个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 语句更新规则 | 是        | 对象 SQL 中的内容匹配和替换的规则。 - 多个"SQL 关键词"之间是"或"的关系。  - "SQL 关键词"最大输入长度为60个字符，"替换为"最大输入长度为 255 个字符。   说明： 例如：选择"正常"搜索模式创建两条语句更新规则。第一条规则在"SQL 关键词"和"替换为"分别输入"CREATE TABLE"和"CREATE TABLE IF NOT EXISTS"，第二条规则分别输入"CREATE VIEW"和"CREATE VIEW IF NOT EXISTS"。在搜索时，UGO 会在目标 SQL 语句中查找包含"CREATE TABLE"或"CREATE VIEW"的语句；在替换时，UGO 将先把"CREATE TABLE"替换为"CREATE TABLE IF NOT EXISTS"，再将"CREATE VIEW"替换为"CREATE VIEW IF NOT EXISTS" 支持两种方式填写信息。 1. 方式一：直接在页面填写"SQL 关键词"和"替换为"信息。  2. 方式二：单击"添加文件"按钮，上传规则文件。规则文件格式参考单击"下载规则模板"按钮获取的规则模板。   |
      
   ![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
   - 参数填写完成后，单击搜索，界面下方会展示满足所有参数条件的对象。
   
   - 所有错误字符串，均可在如[图5]"转换/迁移错误"中查看。
   
   - 如果 UGO 目标数据库连接的用户与 Schema 的所有者不相同，则 UGO 服务将更改 Schema 所有者的名称与用户相同。
    
   
   
8. 单击"搜索"，可在下方看到搜索出的符合要求的待修改对象列表。 
   图7搜索结果   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656671567.png)
   支持按照 Schema、对象类型、转换状态、迁移状态搜索。
   单击"匹配结果"可查看具体的匹配结果信息。
   
   
9. 将需要替换的 SQL 语句输入"替换为"的输入框中，单击"替换"。 
   ![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
   按顺序依次执行多条语句更新规则，每条规则基于前一条规则的执行结果进行 SQL 关键词替换。
   
   
10. 替换完成后，单击"批量语句更新 \> 历史记录"，进入历史记录页面，可以看到历史批量替换记录。 
    图8历史记录   
    ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626392258.png)
    表2历史记录参数说明 
    | **参数**   | **说明**                                                                                                                                                                                                                                                                                           |
    |:---|:---|
    | 历史ID     | 倒序显示修改次数。                                                                                                                                                                                                                                                                                        |
    | 开始时间     | 修改开始时间。例如：2021/09/15 16:28:15 GMT+08:00。                                                                                                                                                                                                                                                         |
    | 结束时间     | 修改完成时间。例如：2021/09/15 16:28:16 GMT+08:00。                                                                                                                                                                                                                                                         |
    | 搜索模式     | 搜索的匹配模式，"正常"或"正则表达式"。                                                                                                                                                                                                                                                                            |
    | 错误信息查询条件 | 搜索时输入的错误字符串。                                                                                                                                                                                                                                                                                     |
    | 语句更新规则   | 替换时输入的"SQL 关键词"和"替换为"信息。                                                                                                                                                                                                                                                                         |
    | 操作       | - 回滚：回退修改。  - 查看列表：查看该次修改的数量及具体 Schema、对象名称、对象类型。 单击"查看 SQL"，可查看修改后的详细 SQL 语句。    |
       
    
    
11. 单击"查看列表"，进入历史记录界面，单击操作列"查看 SQL"，可查看替换前后的 SQL 语句。 
    图9历史记录   
    ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656791523.png)
    
    
 
#### 校正转换/迁移失败对象
![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/warning_3.0-zh-cn.png)
修改后的语句将直接在目标数据库上运行，您需避免使用：导致其他表和其他对象类型丢失的语句，以及影响目标数据库性能的语句，如消耗过多CPU或内存的语句。
1. [登录UGO控制台。](https://console.huaweicloud.com/ugo/#/console/dashboard)
2. 单击左侧导航栏"结构迁移 \> 对象迁移"，显示迁移项目列表。
3. 单击待迁移项目的"操作 \> 迁移"，进入迁移项目，选择"语法转换"页签或者"迁移验证"页签，进入"对象列表"页面。 
   图10对象列表-语法转换完成但是未迁移   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626552174.png)
   - 显示Schema名称、对象名称、对象类型、转换状态、迁移状态、操作等信息。
   
   - 迁移对象列表支持按"对象类型"、"Schema"、"转换状态"、"迁移状态"、"对象名称"、"SQL 内容包含"、"SQL 内容不包含"、"转换错误包含"、"迁移错误包含"筛选。其中"对象名称"支持模糊查询；"SQL 内容包含"、"SQL 内容不包含"可筛选 SQL 原语句中包含或不包含指定关键词的对象，"SQL 内容包含"、"SQL 内容不包含"最多各支持三个关键词，每个关键词最多 100 个字符，若项目中对象数量较多，当前查询返回较慢。
   
   - 使用"Schema"作为筛选条件时，如果"Schema"对象名称中含有空白字符，无法筛选出结果。
   
   - TABLE、INDEX 等对象存在被拆分为多个子对象的情况。
     - 拆分子对象功能用于控制对象多种特性的迁移顺序。
     
     - 如需查看全量子对象的状态和内容，需在父类对象处单击"查看详情"。
     
     - 子对象拆分依赖 UGO 的转换功能，当出现解析脚本出错和转换脚本出错的情形时，不会拆分子对象。
     
     - 被拆分出子对象的对象状态与其他对象会有所不同：
       - 当父对象转换状态为成功，则子对象转换状态都为成功。
       
       - 当父对象转换状态为失败，则至少存在一个子对象转换状态为失败。
       
       - 当父对象转换状态为手工修改，则至少有一个子对象转换状态为手工修改。
       
       - 当父对象在迁移后，迁移状态为成功，则子对象迁移状态为成功或是忽略。
       
       - 当父对象迁移后迁移状态为失败，则至少存在一个子对象迁移状态为失败。
       
       - 当子对象全被忽略迁移，父对象也将会被忽略迁移。
        
      
   
   
   
   
4. 选择"语法转换"页签，进入"对象列表"页面，选择单条转换失败对象，单击"操作 \> 对象校正"，进入对象详细信息页面。可以查看"转换错误"、"转换风险"信息和"修改"建议。
   
   图11对象详细信息-转换错误和告警   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002659113697.png)
   对转换失败的对象进行SQL语句修改。单击"保存"，"转换状态"标记为"手工修改"，然后单击"迁移"，跳出弹框确认是否在目标数据库执行单条SQL语句，单击"确认"。
   图12单条SQL直接迁移验证   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002628875822.png)
   
   
5. 选择"迁移验证"页签，进入"对象列表"页面，选择单条迁移失败对象，单击"操作 \> 对象校正"，进入对象详细信息页面。可以查看"迁移错误"和"修改"建议。
   
   图13对象详细信息-迁移错误   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002659115199.png)
   对迁移失败的对象进行SQL语句修改。单击"保存"，"迁移状态"标记为"待启动"，然后单击"迁移"，跳出弹框确认是否在目标数据库执行单条SQL语句，单击"确认"。
   图14单条SQL直接迁移验证   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002659235129.png)
   ![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
   - 建议按照管理、存储、代码、作业对象的顺序进行对象校正。
    
   
   
6. 基本信息页面。可查看转换或迁移失败报错信息。若有修改建议，也同时展示。 
   - "转换状态"为"失败"时，显示"转换错误"。
   
   - "迁移状态"为"失败"时，显示"迁移错误"。
     ![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
     当目标库为 GaussDB 时，数据库对象命名需要满足约束：非时序表长度不超过 63 个字节，时序表长度不超过 53 个字符，以字母或下划线开头，中间字符可以是字母、数字、下划线、$、#，如果对象名不满足该约束，会导致迁移失败。
     
   
   
   
   
7. 可对SQL语句进行修改。 
   - 导出：将目标端代码以 .sql 格式导出。命名为：*对象名称* .sql。
   
   - 导入：可直接导入修改后的 SQL 文件，上传 SQL 文件将自动保存所有更改。
   
   - 比较：默认关闭。开启则会比较展示源端与目标端的详细代码对比，此时 SQL 语句不可编辑。
   
   - 复制：可单击源端或目标端后的![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656671571.png)，将 SQL 语句复制至剪贴板。
   
   - 全屏：可单击目标端后的![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626392262.png)，将目标端编辑框全屏展示，便于编辑修改。全屏时可单击![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002656791527.png)图标退出全屏，或者单击编辑框后使用键盘 Esc 退出。
   
   - 更新依赖关系数据：如果启用，还将验证所有从属对象。默认启用，也可关闭。
   
   - 重置：已修改的代码，在还未保存前，可单击"重置"，清除所有修改。若已保存，只能回滚至历史修改代码。
   
   - 保存：保存对目标端代码的修改。并会形成记录保存在"修改历史"。
   
   - 迁移：单条转换失败对象或者单条迁移失败对象修改SQL后，单击"保存"，然后单击"迁移"，可直接迁移到目标数据库。
   
   
   
   
8. 修改后单击"保存"，会形成修改记录，单击"修改历史"按钮，查看修改历史。 
   列表展示修改时间，单击对应时间后的"回滚"，可以回滚至最近时间的修改记录。
   
   
9. 单击历史ID前的下拉图标，对比展示修改记录。 
   图15修改历史   
   ![](https://support.huaweicloud.com/usermanual-ugo/zh-cn_image_0000002626552178.png)
   
   
![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
- Oracle 为源的迁移任务，DB_LINK 类型的对象只支持转换，不支持迁移，迁移状态默认为"忽略"。
 
