Oracle迁移至DM8常见适配问题

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

  1. 请下载DM驱动,将Oracle的JDBC驱动ojdbc,替换为DM8驱动DmJdbcDriver18。
  2. 请使用DEM工具进行数据移植。

    具体操作请参见《从Oracle移植到DM》及《DM DBA手记之Oracle移植到DM》。

DM数据库兼容性设置

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

详情请参见DM官方数据移植文档迁移准备中兼容性参数设置。

整数相除时相关设置

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

详情请参见DM官方数据移植文档迁移准备中兼容性参数设置。

系统保留字配置

当在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:违反引用约束。