Oracle迁移至DM8常见适配问题

驱动下载及DEM工具使用指导

  1. 请下载链接中的DM驱动,将Oracle的JDBC驱动ojdbc,替换为DM8驱动DmJdbcDriver18。

    DM驱动下载链接:https://download.dameng.com/eco/adapter/resource/jdbc/jdbc-20240326.zip

  2. 请使用DEM工具进行数据移植。

DM数据库兼容性设置

请在迁移数据之前,将兼容参数调整为兼容Oracle数据库,可参考下列措施:

整数相除时相关设置

若需要整数相除保留小数位,请在迁移数据之前,可参考下列措施:

系统保留字段配置

当在DM中创建表等对象时,出现“语法分析出错”报错,可能是因为使用的对象名为系统保留字。请通过SQL语句SELECT * FROM V$RESERVED_WORDS WHERE RESERVED='Y' AND KEYWORD=对象名称;,查询该对象名是否为保留字,若是,可参考下列措施:

迁移视图指导

在迁移视图的过程中,若出现“无效的表或视图名”报错,可能是因为在迁移视图前,没有将依赖的表迁移过去。请按照迁移的顺序,先迁移序列、再迁移表、最后迁移视图、自定义类型、类、函数、存储过程、包等。

详情请参见官方FAQ:迁移视图提示:无效的用户对象

精度与标度设置

Oracle中数据类型number(m,n),允许n>m,达梦中要求m>=n,达梦中m表示精度,n表示标度。精度是一个无符号整数,定义了总的数字数;标度定义了小数点后的数字位数。如果数据列中遇到number类型定义m<n的场景,请确认是否可以修改为m>=n,若无法修改,请单独迁移这张表,修改达梦中的数据类型。

详情请参见官方FAQ:报错:精度必须大于标度

数据溢出报错指导

如果从Oracle迁移到DM的过程出现“数据溢出”报错,可能是因为Oracle的int类型自动转换成number(38)或Oracle的number类型存放精度超过38位。可参考下列措施:

索引不存在报错指导

如果从Oracle迁移到DM的过程出现“引用索引不存在”报错,可能是因为先迁移了子表的数据,父表的数据没有迁移,可参考下列措施:

详情请参见官方FAQ:违反引用约束