迁移前需要在源库构造一些数据类型,供迁移完成后验证数据。
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地址,通过数据库连接工具连接数据库。
- 根据支持的数据类型,在源库执行语句构造数据。
a) 创建一个测试用的用户。
create user test_info identified by xxx ;
test_info为本次实践创建的用户,xxx为用户的密码,请根据实际情况替换。
b) 给用户赋权。
grant dba to test_info ;
c) 在当前用户下创建一个数据表。
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));
d) 插入两行数据。
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');
e) 使语句生效。
commit;
- 在目标端创建库。
a) 登录天翼云控制台。
b) 单击管理控制台左上角的,选择区域。
c) 单击左侧的服务列表图标,选择“数据库 > 数据库服务 > 数据管理服务”。
d) 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
e) 单击“新增数据库登录”,打开新增数据库登录窗口。
f) 选择“数据库引擎”、“数据库来源”、目标实例,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。
g) 您可根据需要选择“测试连接”(必选操作步骤)。
如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。
h) 设置完登录信息,单击“立即新增”。
i) 新增完成后,单击新增登录的“登录”,登录当前数据库。
j) 进入SQL查询页面。
k) 执行如下语句创建兼容Oracle的数据库。
此例中为:test_database_info,请根据实际情况选择。
CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';