同步前构造数据
同步前需要在源库构造一些数据类型,供同步完成后验证数据。
DRS支持的数据类型如下所示:
源库数据类型 |
目标库数据类型 |
源库数据类型做主键,同步能力 |
源库数据类型做非主键,同步能力 |
源库数据类型做主键,对比能力 |
源库数据类型做非主键,对比能力 |
备注 |
---|---|---|---|---|---|---|
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为用户的密码,请根据实际情况替换。
- 给用户赋权。
- 在当前用户下创建一个数据表。
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');
- 使语句生效。
- 创建一个测试用的用户。
- 在目标端创建库。
- 登录华为云控制台。
- 单击管理控制台左上角的,选择区域。
- 单击左侧的服务列表图标,选择 。
- 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
- 单击“新增数据库实例登录”,打开新增数据库实例登录窗口。
- 选择“数据库引擎”、“数据库来源”,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。