同步前需要在源库构造一些数据类型,供同步完成后验证数据。
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
支持
支持
支持
支持
-
执行如下步骤在源库构造数据:
-
根据本地的Oracle数据库的IP地址,通过数据库连接工具连接数据库。
-
根据DRS支持的数据类型,在源库执行语句构造数据。
-
创建一个测试用的用户。
create user
test_info
identified by
xxx
;
test_info为本次实践创建的用户,xxx为用户的密码,请根据实际情况替换。
-
给用户赋权。
grant dba to
test_info
;
-
在当前用户下创建一个数据表。
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)
);
-
插入两行数据。
insert into test_info.DATATYPELIST values(4,'huawei','xian','Shannxi','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');
-
使语句生效。
commit;
-
-
在目标端创建库。
-
登录华为云控制台。
-
单击管理控制台左上角的
,选择区域。
-
单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。
-
在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
-
单击“新增数据库实例登录”,打开新增数据库实例登录窗口。
-
选择“数据库引擎”、“数据库来源”,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。
如开启“定时采集”,需勾选“记住密码”。
-
单击“测试连接”测试连接是否成功。
如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。
-
设置完登录信息,单击“立即新增”。
-
新增完成后,单击新增登录的“登录”,登录当前数据库。
-
选择“SQL操作”> “SQL查询”进入SQL查询页面。
-
执行如下语句创建兼容Oracle的数据库。
此例中为:test_database_info,请根据实际情况选择。
CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';
-
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…