文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> 使用Migration Tool> Oracle SQL迁移

Oracle SQL迁移

分享
更新时间: 2019/08/09 GMT+08:00

工具支持从Oracle到DWS的迁移,包括模式、DML、查询、系统函数、PL/SQL等。

在Linux中执行Oracle SQL迁移

在Linux中执行以下命令开始迁移。用户需指定源数据库、输入和输出文件夹路径、日志路径、应用程序语言和迁移类型:

sh migrate.sh  
 --source-db Oracle   
 --input-folder <input-script-path>    
 --output-folder <output-script-path>    
 --log-folder <log-path>    
  --application-lang Oracle 
 --migration-type <migration-type>

迁移不含PL/SQL语句的普通DDL语句(表、视图、索引、序列等)时,应使用Bulk模式(即将migration-type参数设为Bulk);迁移含PL/SQL语句的函数、过程、包等对象时,应使用BLogic模式(即将migration-type参数设为BLogic)。

此外,应将普通DDL脚本和PL/SQL脚本分置不同输入文件夹下迁移。

以示例文件夹路径为例,将migration-type参数设为Bulk:

sh migrate.sh--source-db Oracle --input-folder /home/migrationtool/example/input 
--output-folder /home/migrationtool/example/output --log-folder 
/home/migrationtool/example/log --application-lang SQL --migration-type bulk

在Windows中执行Oracle SQL迁移

在Windows中执行以下命令开始迁移。用户需指定源数据库、输入和输出文件夹路径、日志路径、应用程序语言和迁移类型:

java -jar migrationtool.jar
  --source-db Oracle
  --input-folder <input-script-path> 
  --output-folder <output-script-path> 
  --log-folder <log-path> 
  --application-lang Oracle
  --migration-type <migration-type>
  • 迁移不含PL/SQL语句的普通DDL语句(表、视图、索引、序列等)时,应使用Bulk模式(即将migration-type参数设为Bulk)。
    以示例文件夹路径为例,将 migration-type参数设为 Bulk,命令如下:
    java -jar migrationtool.jar --source-db Oracle --input-folder D:\test\migration\input --output-folder D:\test\migration\output --log-folder D:\test\migration\log --application-lang SQL --migration-type bulk

    在工具执行时,控制台上会显示迁移摘要,包括迁移进度和完成状态。执行信息和发生的错误也会写入日志文件

    Migration: MigrationTool version initiated by User1
    Migration process start time : Tue Aug 08 16:08:06 GMT+08:00 2017
    Number of available processors : 4
    Configured simultaneous processes in the Tool : 3
    Configured simultaneous processes in the Tool : 3
    11% completed
    22% completed
    33% completed
    44% completed
    55% completed
    66% completed
    77% completed
    88% completed
    100% completed
    **************************************************************************
    Total number of SQL files in input folder : 9
    Number of queries failed : 0
    Number of files failed : 0
    Number of files migrated successfully : 9
    **************************************************************************
    Log file : migrationtool.log is placed in the path : ./log
    Error Log file : migrationtoolError.log is placed in the path : ./log
    Migration process end time : Tue Aug 08 16:08:07 GMT+08:00 2017
    Total process time : 680 ms
  • 迁移含PL/SQL语句的函数、过程、包等对象时,应使用BLogic模式(即将migration-type参数设为BLogic)。
    以示例文件夹路径为例,将 migration-type参数设为 BLogic,命令如下:
    java -jar migrationtool.jar --source-db Oracle --input-folder D:\test\migration\input --output-folder D:\test\migration\output --log-folder D:\test\migration\log --application-lang SQL --migration-type blogic

    在工具执行时,控制台上会显示迁移摘要,包括迁移进度和完成状态。执行信息和发生的错误也会写入日志文件

    Migration: MigrationTool version initiated by User1
    Migration process start time : Tue Aug 08 16:08:08 GMT+08:00 2017
    Number of available processors : 4
    Configured simultaneous processes in the Tool : 3
    Configured simultaneous processes in the Tool : 3
    11% completed
    22% completed
    33% completed
    44% completed
    55% completed
    66% completed
    77% completed
    88% completed
    100% completed
    **************************************************************************
    Total number of SQL files in input folder : 9
    Number of queries failed : 0
    Number of files failed : 0
    Number of files migrated successfully : 9
    **************************************************************************
    Log file : migrationtool.log is placed in the path : ./log
    Error Log file : migrationtoolError.log is placed in the path : ./log
    Migration process end time : Tue Aug 08 16:08:09 GMT+08:00 2017
    Total process time : 680 ms

    注意,应将普通DDL脚本和PL/SQL脚本分置不同输入文件夹下迁移。

Oracle PACKAGE迁移注意事项

1. 应将包规范(即包头)与包体分置于不同文件、同输入路径中进行迁移。

2. 应先使用Bulk模式迁移普通DDL语句(包含PACKAGE脚本中引用到的全部表结构信息),以在config/create-types-UDT.properties文件中形成字典信息。之后再使用Blogic模式迁移包规范(即包头)与包体。具体解释如下。

在部分Oracle PACKAGE 定义包规范时,使用了"tbName.colName%TYPE"语法以基于其他表对象声明自定义的记录类型。

    例如
    CREATE OR REPLACE PACKAGE p_emp
    AS
        --定义RECORD类型
        TYPE re_emp IS RECORD(
            rno emp.empno%TYPE,
            rname emp.empname%TYPE
        );

    END;

当前内核版本(截止V1R8)的GaussDB暂不支持"tbName.colName%TYPE"语法,MT工具在迁移时需要构建含有诸如emp表信息的数据库上下文环境。由此需要先使用MT工具迁移所有的表创建脚本(即使用"Bulk"模式迁移普通DDL语句),MT内部会自动生成相应的数据字典。当含有各种表信息的上下文环境构建完成后,可以使用 Blogic 模式迁移 Oracle PACKAGE,此时re_emp记录类型会根据emp表的列类型完成迁移。

    期望输出
    CREATE TYPE p_emp.re_emp AS (
        rno NUMBER(4),
        rname VARCHAR2(10)
    );

有关如何使用Beta工具进行Oracle SQL迁移,请参见执行Migration Tool

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区