注册
探索dm的oracle兼容模式对迁移中null和''是否相同
专栏/技术分享/ 文章详情 /

探索dm的oracle兼容模式对迁移中null和''是否相同

雾岛听风 2026/08/28 114 0 0
摘要

探索dm的oracle兼容模式对迁移中null和’'是否相同

结论

无论是否开启兼容模式,进行迁移之后,二者的数据都是相同的

原因是因为在oracle端插入数据‘’(空串)时会自动转换成null,在进行dts迁移时也会把null迁移到DM中,但是在DM里可以存的进‘ ’

在迁移过程本身不会出现问题,但是在后边的使用中,会出现二者读取不一致的情况

测试①

测试目的 测试不开启对oracle兼容的情况下,迁移后对于null、单引号’’是否有区别
测试步骤<br> 查看当前数据库是否开启兼容模式<br>COMPATIBLE_MODE=0→没开<br>1<br>在oracle中创建表并插入要测试的数据并查看输出<br>2<br>迁移到DM数据库<br>3<br>4<br>5<br>6<br>7<br>
测试结果<br> 8<br>9

测试②

测试目的 测试开启对oracle兼容的情况下,迁移后对于null、单引号’’是否有区别
测试步骤 修改COMPATIBLE_MODE参数值为2 兼容oracle模式<br><br>10<br>重启数据库后进行查看当前参数的值<br><br>11<br>12<br>在oracle创建新表 T_NULL_TEST_MODE_2与刚才内容一致<br><br>13<br>进行迁移<br><br>14<br><br>15<br><br>16<br><br>17<br><br>18<br>
测试结果 <br>19<br>20<br>

分别在DM和oracle中查询可以得到:

为防止由于时是dts的原因导致,所以在两个数据库都分别再插入5条相同的数据

21

22

①SELECT * FROM T_NULL_TEST_MODE_2 WHERE CHAR_1=’ ’;

23

24

②SELECT * FROM T_NULL_TEST_MODE_2 WHERE CHAR_1 IS NULL;

25

26

③在兼容模式为COMPATIBLE_MODE=0时插入数据

INSERT INTO T_NILL_TEST_MODE_2 VALUES(11, ‘’, ‘x’, NULL,NULL);

进行查看发现不会输出这条新插入的数据

27

这里可以证明id=2的NULL数据是由于DTS迁移过来的

结论:在进行迁移中,兼容模式是否开启本身对于迁移没有影响。但是在后续的运行中,当COMPATIBLE_MODE=0时,新写入的’’值会存成独立的值,与迁移过来的数据NULL分离开。在进行迁移之前需要把COMPATIBLE_MODE=2设置好,使得空串’’与NULL等值

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服