注册
ORACLE迁移达梦常见问题处理
技术分享/ 文章详情 /

ORACLE迁移达梦常见问题处理

lysrwhjy 2024/06/28 2064 3 0

ORACLE迁移至达梦常见问题处理

1、非法的基类名[SYSGEO]

迁移 ORACLE 的空间数据类型为 MDSYS.SDO_GEOMETRY 与 MDSYS.SDO_GEOGRAPHY 的数据到 DM,报错“非法的基类名 [SYSGEO]”
解决办法:
迁移前在 DM 数据库创建相应的空间数据系统包,并在使用 DTS 迁移工具迁移时配置数据类型映射关系。示例如下:将 ORACLE 的 MDSYS.SDO_GEOMETRY 与 MDSYS.SDO_GEOGRAPHY 数据类型迁移为 DM 的 SYSGEO2.ST_GEOMETRY 与 SYSGEO2.ST_GEOGRAPHY 数据类型
1、在 DM 数据库中创建 DMGEO2 包
SP_INIT_GEO2_SYS(1);
2、确认 DMGEO2 系统包为启用状态。
SELECT SF_CHECK_GEO2_SYS;
3、DTS 迁移时配置数据类型映射关系。
MDSYS.SDO_GEOMETRY --> SYSGEO2.ST_GEOMETRY
MDSYS.SDO_GEOGRAPHY --> SYSGEO2.ST_GEOGRAPHY
image.png

2、With cluster key and lob

image.png
解决办法
修改数据库动态参数重新迁移
SP_SET_PARA_VALUE(2,‘PK_WITH_CLUSTER’,0);

3、违反协议[XX,XX]

解决办法:
出现此问题仅需要更换相关驱动即可
image.png

4、字符串截断/精度超出范围

一般从 oracle 迁移到 DM 的时候,出现字符串截断的一般都是字段中含有中 文,出现这种问题是因为 DM 初始化的时候选择的字符集是 Unicode(即 utf-8), 该字符集的国际标准是一个汉字占 3 个字节,而 oracle 中默认情况下一个汉字占 2 个字节,此时迁移的时候就会报下面的错误:
image.png
解决办法
对相关报错列扩展精度或在迁移前选择字符长度隐射关系为 2
image.png

5、Number类型数据溢出

Oracle 的 number 类型存放精度超过 38 位;
但 DM 的 number(38)类型,严格限制最大仅能存 38 位,超过这个精度在迁移的时候就会报:数字溢出
image.png
解决办法:
1、确认数据本身有没有错误,在 Oracle 中存储这种超长的数值,理论上也是不支持;
2、 DM 超过 38 位的 number 类型,建议改成 varchar 类型;

6、Java heap space

dts 所在机器内存不足导致迁移过程中内存溢出。
image.png
解决办法:
1、修改 dts.ini 配置文件,添加内存参数-Xmx2048m,重新迁移即可。
2、如果当前环境不支持调整内存参数,可以通过修改 dts 转换功能中“源一次读取行数和目的一次提交行数(调整成合适的值)”,比如调整为一次读取和提交 4096 行。

image.png

7、无效的链接名

/* 任务失败: 创建视图"JTITSM".“CLOUD_PERF_CURRENT” /
/
第6 行附近出现错误:
无效的链接名[JTITSM_CLOUD] */
解决方法:
该问题是因为使用到了dblink,而在达梦中dblink未创建导致。
我们可以通过建立到自身的dblink,暂时绕过依赖的问题,但是自身上依然要有dblink对应的表结构,没有的话,就建一个。达梦创建dblink方法可以参考:达梦创建dblink方法。

8、dbms_job无法使用

SQL> SP_INIT_JOB_SYS(1);

9、记录超长

DM 在初始化的时候,选择的页大小影响后面表每行数据的长度,表每行的 长度之和(普通数据类型)不能超过一页大小,如果超过 1 页大小即报记录超长 的错误,如下图:
image.png
解决办法:
1)找到表中 varchar 类型比较长的(如 varchar2(8000)这种),修改成 text 类型
2)初始化的时候页大小选择 32k。(对于表中 varchar2 类型较长,并且 字段较多的情况不太适合,这种情况采用方法 1 解决。)

10、违反唯一性约束

这种情况是因为表中设置了唯一性约束或者主键约束,但是数据中有重复记 录造成的。这种情况有可能是原始库的约束被禁用了,或者数据重复迁移造成的。
image.png
解决办法:
在确定源数据没有问题的情况下,迁移的时候选择删除后再拷贝,如下图: 在迁移界面中,先中要迁移的表,然后点击转换.
image.png

11、违反引用约束

这种问题主要是由外键约束造成的,父表的数据没有迁移,先迁移了子表的 数据,错误如图所示:
image.png
解决办法:
(1)第一次只选择表定义,不选择约束等
(2)第一次迁移完成后(确保没有错误),第二次只选择数据
(3)第三步选择约束、索引等
按照上面三步迁移,基本上都可以顺利迁移成功。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服