暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle迁移至GaussDB(for openGauss)最佳实践(迁移前构造数据)

MTL 2022-11-24
2076

迁移前需要在源库构造一些数据类型,供迁移完成后验证数据。

DRS支持的数据类型如下所示:

表1 数据类型映射关系

源库数据类型

目标库数据类型

源库数据类型做主键,同步能力

源库数据类型做非主键,同步能力

源库数据类型做主键,对比能力

源库数据类型做非主键,对比能力

备注

CHAR

character

支持

支持

支持,忽略字符前后的空格

支持,忽略字符前后的空格

-

VARCHAR

character varying

支持

支持

支持

支持

源目标库数据表示范围不同,存在精度损失。

VARCHAR2

character varying

支持

支持

支持

支持

-

NCHAR

character

支持

支持

支持,忽略字符前后的空格

支持,忽略字符前后的空格

-

NVARCHAR2

nvarchar2

支持

支持

支持

支持

-

NUMBER

numeric

支持

支持

支持

支持

-

NUMBER (6,3)

numeric(6,3)

支持

支持

支持

支持

-

NUMBER (6,0)

Integer

支持

支持

支持

支持

-

NUMBER (3)

smallint

支持

支持

支持

支持

-

NUMBER (6,-2)

integer

支持

支持

支持

支持

-

BINARY_FLOAT

real

不支持(目标库不支持做主键建表)

支持

不支持

支持

源目标库数据表示范围不同,存在精度损失。

BINARY_DOUBLE

double precision

不支持(目标库不支持做主键建表)

支持

不支持

支持

-

FLOAT

real

不支持(目标库不支持做主键建表)

支持

不支持

支持

源目标库数据表示范围不同,存在精度损失。

INT

numeric

支持

支持

支持

支持

-

INTEGER

numeric

支持

支持

支持

支持

-

DATE

date

支持

支持

不支持

支持

DRS在目标库建表时类型为date,此时源目标库数据表示范围不同,存在精度损失,不支持对比。

TIMESTAMP

timestamp(6) without time zone

支持

支持

不支持

校验到小数点后6位

源库使用限制:支持的最大精度是6。

TIMESTAMP_TZ

timestamp(6) with time zone

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

TIMESTAMP_LTZ

timestamp(6) with time zone

不支持(目标库不支持做主键建表)

支持

不支持

过滤该列

-

INTERVAL_YM

interval year to month

支持

支持

不支持

不支持

增量同步不支持该类型。

INTERVAL_DS

interval day to second

支持

支持

不支持

不支持

增量同步不支持该类型。源库使用限制:支持的最大精度是6。

BLOB

bytea

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

CLOB

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

NCLOB

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

LONG

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

LONG_RAW

bytea

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

-

RAW

bytea

不支持(目标库不支持做主键建表)

支持

不支持

支持

-

RowID

character varying(18)

支持

支持

支持

支持

-

BFILE

-

不支持

不支持

不支持

不支持

源库使用限制:不支持bfile类型。

XMLTYPE

-

不支持

不支持

不支持

不支持

源库使用限制:不支持xmltype类型。

UROWID

-

不支持

不支持

不支持

不支持

全量增量都不支持同步。

sdo_geometry

-

不支持

不支持

不支持

不支持

源库使用限制:不支持sdo_geometry类型。

NUMBER(*,0)

numeric

支持

支持

支持

支持

-

执行如下步骤在源库构造数据:

  1. 根据本地的Oracle数据库的IP地址,通过数据库连接工具连接数据库。
  2. 根据支持的数据类型,在源库执行语句构造数据。
    1. )创建一个测试用的用户。

      create user test_info identified by xxx;

      test_info为本次实践创建的用户,xxx为用户的密码,请根据实际情况替换。

    2. )给用户赋权。

      grant dba to test_info;

    3. )在当前用户下创建一个数据表。

      CREATE TABLE test_info.DATATYPELIST(

      ID INT,

      COL_01_CHAR______E CHAR(100),

      COL_02_NCHAR_____E NCHAR(100),

      COL_03_VARCHAR___E VARCHAR(1000),

      COL_04_VARCHAR2__E VARCHAR2(1000),

      COL_05_NVARCHAR2_E NVARCHAR2(1000),

      COL_06_NUMBER____E NUMBER(38,0),

      COL_07_FLOAT_____E FLOAT(126),

      COL_08_BFLOAT____E BINARY_FLOAT,

      COL_09_BDOUBLE___E BINARY_DOUBLE,

      COL_10_DATE______E DATE DEFAULT SYSTIMESTAMP,

      COL_11_TS________E TIMESTAMP(6),

      COL_12_TSTZ______E TIMESTAMP(6) WITH TIME ZONE,

      COL_13_TSLTZ_____E TIMESTAMP(6) WITH LOCAL TIME ZONE,

      COL_14_CLOB______E CLOB DEFAULT EMPTY_CLOB(),

      COL_15_BLOB______E BLOB DEFAULT EMPTY_BLOB(),

      COL_16_NCLOB_____E NCLOB DEFAULT EMPTY_CLOB(),

      COL_17_RAW_______E RAW(1000),

      COL_19_LONGRAW___E LONG RAW,

      COL_24_ROWID_____E ROWID,

      PRIMARY KEY(ID)

      );

    4. )插入两行数据。

      insert into test_info.DATATYPELIST values(4,'huawei','xian','shanxi','zhongguo','shijie', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');

      insert into test_info.DATATYPELIST values(2,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');

    5. )使语句生效。

      commit;


  3. 在目标端创建库。


    1. 登录华为云控制台。
    2. 单击管理控制台左上角的,选择区域。
    3. 单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。
    4. 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
    5. 单击“新增数据库登录”,打开新增数据库登录窗口。
    6. 选择“数据库引擎”、“数据库来源”、目标实例,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。

    7. 您可根据需要选择“测试连接”(必选操作步骤)。

    8. 如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。

    9. 设置完登录信息,单击“立即新增”。
    10. 新增完成后,单击新增登录的“登录”,登录当前数据库。

    11. 进入SQL查询页面。

    12. 执行如下语句创建兼容Oracle的数据库。

      此例中为:test_database_info,请根据实际情况选择。

      CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';

来源:华为云
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论