DataSync数据迁移Oracle11g_to_GaussDB100小结
DataSync简介
DataSync是GaussDB 100的数据迁移工具,致力于实现其他商业数据库和GaussDB 100
之间高效、安全的数据同步。支持从Sybase、Oracle、MySQL、GaussDB 100
V100R003C10和SQL Server迁移数据至GaussDB 100 V300R001数据库。
支持GaussDB 100 V100R003C10在线迁移和Sybase、Oracle、MySQL、
GaussDB 100 V100R003C10、SQL Server离线迁移两种数据迁移方式。
支持情况
1.DataSyncOracle支持自动创建主
键、外键、非空约束、索引和Range分区,以及全局临时表,其中外键约束子
句仅支持ON DELETE { CASCADE | SET NULL },不支持创建注释。
2.实验中发现多个表之间外键递归依赖时会报错(被依赖的表不存在),只能手动创建,若外键较多手动工作量会比较大,和研发沟通后了解到新版本DataSync加入了create_pk_and_index_after_import配置参数在导入数据后创建索引及主外键可以解决此问题,11月可能会对外发布,具体时间尚未确定。
3.DataSync不支持将源库的视图、存储过程、函数、序列、触发器、同名词同
步到目标库。
下表列举了目前已知DataSync对Oracle数据库对象的支持情况,建议在项目应用前先了解使用场景中的实际需求,对需要另行处理的额外工作量有所预估。
数据库对象 | 是否支持 | 新版本差异(预计11月发布) |
主键 | 是 | |
外键 | 是,但外键约束子 句仅支持ON DELETE { CASCADE | SET NULL },但被依赖的表要先于外键存在 | 使用create_pk_and_index_after_import配置参数在导入数据后创建,可以规避创建失败的错误 |
非空约束 | 是 | |
索引 | 是 | |
Range分区 | 是 | |
全局临时表 | 是 | |
注释 | 否 | |
视图 | 否 | |
存储过程 | 否 | |
函数 | 否 | |
序列 | 否 | |
触发器 | 否 | |
同义词 | 否 | |
自定义类型 | 否 |
使用
安装
下载地址:https://support.huawei.com/carrier/navi?coltype=software#allProduct=true&col=software&path=PBI1-8132379/PBI1-8132381/PBI1-8132383/PBI1-9399774
选择Gauss100 OLTP V300R001C00SPC205——〉GAUSSDB100-V300R001C00-DATASYNC.tar.gz
填写下载申请:
版本使用原因:06入网测试
版本使用区域:研发使用
版本使用代表处:研发使用
版本相信信息说明:XXXX实验室使用,用于ISV产品和GaussDB数据库的对接和迁移测试
Linux上解压即可使用
注:需要工具部署的服务器能同时连接源数据库和目标数据库。
如果将工具部署到目标数据库所在服务器上,则需要以GaussDB 100数据库安装用
户运行迁移工具。
配置
Config目录下:
cfg.ini:flow_type导入/导出/导入并导出、源库、目标库、服务器
exp_onj.ini:用户迁移数据,只有部分库和表需要迁移时,则用户可以配置导出或导入这些库和表。此文件可以不配置。
exclusive_obj.ini:不导入/不导出的库和表的配置
加密
需要对以下3个密码加密后再填写cfg.ini
java -jar DSS.jar -pwd <password type>, -password <password type>
password type:
1--export database
2--import database
3--import server
执行
java -jar DSS.jar -p config/cfg.ini -i config/exp_obj.ini -e config/exclusive_obj.ini
DdlSync阶段常见错误:
源库Oracle权限不足时,授予dba权限:如grant dba to lhy
若报错密码无效,重新加密
若报如下外键错误
[gaussdba@gaussdb01 DataSync]$ cat ./logs/reports_2019-10-31/16h-18m-37s/dss_error_log.log
2019-10-31 16:20:06 PM [Thread: main:89976 ][ Class:com.huawei.dss.envconvert.ddlvalidator.impl.DdlValidatorImpl >> Method: com.huawei.dss.envconvert.ddlvalidator.impl.DdlValidatorImpl.isCreateSuccess(DdlValidatorImpl.java:1086) ]
ERROR:[SYSMAN.MGMT_INV_FILE create foreign key] create error : com.huawei.gauss.exception.GaussException: [errorCode=GS-00650, SQLState='28000', reason='errLine = 0, errColumn = 0, errMsg=The column referenced by a foreign key was not the unique index or primary key of the referenced table,ioClient:@10b9db7b', sql=alter table LHY.MGMT_INV_FILE add constraint FILE_LAST_PATCH_FK foreign key(LAST_PATCH_GUID) references LHY.MGMT_INV_PATCH(PATCH_GUID), sessionId=180]
2019-10-31 16:20:07 PM [Thread: main:90877 ][ Class:com.huawei.dss.schedule.DssEntrance >> Method: com.huawei.dss.schedule.DssEntrance.main(DssEntrance.java:109) ]
找到references对应的表,在Oracle中查看DDL,手动在GaussDB100中创建,重新用DataSync导入,若还有这类错误,继续手动创建references所指被依赖的表
- 点赞
- 收藏
- 关注作者
评论(0)