由于时间数据类型不匹配导致ORACLE到达梦数据库迁移失败

在将Oracle 19C数据库迁移到DM8时遇到时间格式不兼容的问题,通过修改DM8初始化文件的DATETIME_FMT_MODE参数为1,解决了由Oracle的DATE和TIMESTAMP类型转换到DM8的DATETIME类型时的格式冲突。此参数影响NLS_DATE_FORMAT等格式设置,确保了数据的顺利导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迁移环境

源端:Oracle 19c

目标端:DM8 1-2-18-21.06.07-141116-10013-ENT

在对某银行用户做应用适配的时候,迁移oracle 19C的数据库到DM8环境中,利用dm8自带的官方工具dts进行迁移,迁移过程中报错,不支持的时间格式和日期格式

本人对所报错的表查看了两边的数据结构,发现在oracle源端表的字段为data类型的,到了达梦数据库,变为了datatime

Timestamp类型的,也转换成立datatime

所以为了适配此过程,特对dm8的初始化文件进行了修改

DATETIME_FMT_MODE=1后,dts成功导入数据。

该参数的含义如下:

是否兼容 ORACLE 日期格式。0:不兼容;1: 兼容 注:此参数被动态修改后仅影响新生成的会话。

该参数为动态参数。

同时会影响以下参数

NLS_DATE_FORMAT:指定 DATE 类型的显示格式,包括 DATE 列 INSERT/SELECT 使用的格式、CAST 转换采 用的格式。不设置时格式取决于 DATETIME_FMT_MODE 参数

NLS_TIME_FORMAT:指定 TIME 类型的格式,包括 TIME 列 INSERT/SELECT 使用的格式、TO_CHAR 的显 示格式、CAST 转换采用的格式。不设置时格 式取决于 DATETIME_FMT_MODE 参数

NLS_TIMESTAMP_F ORMAT: 指定 TIMESTAMP 类型的格式,包括 TIMESTAMP 列 INSERT/SELECT 使用的格式、 TO_CHAR 的显示格式、CAST 转换采用的格式。 不设置时格式取决于 DATETIME_FMT_MODE 参数

NLS_TIME_TZ_FOR MAT: 指定 TIMESTAMP_TZ 类型的格式,包括 TIMESTAMP_TZ 列 INSERT/SELECT 使用的 格式、TO_CHAR 的显示格式、CAST 转换采用 的格式。不设置时格式取决于 DATETIME_FMT_MODE 参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值