我们先来看下BLANK_PAD_MODE为默认值时,DM数据库查询’A’的返回情况
步骤一:先确认BLANK_PAD_MODE为0
步骤二:insert两条数据
步骤三:查询验证
可以看到,默认值的情况下,DM数据库认为’A’和’A '是一条数据
步骤一:查看参数设置为1
步骤二:insert两条数据
步骤三:查询验证
可以看到行为发生改变,DM数据库认为‘A’和‘A ’不是一条数据。
结论:如果源端是Oracle库,在生产上有唯一约束的,又存在空格,建议初始化时数据库将BLANK_PAD_MODE参数勾选,即设置为1。
兼容Oracle参数还有
参数名 | 缺省值 | 属性 | 说明 |
---|---|---|---|
CALC_AS_DECIMAL | 0 | 静态 | 0:默认值,表示整数类型的除法、整数与字符或 BINARY 串的所有四则运算,结果都处理成整数1:表示整数类型的除法全部转换为 DEC(0,0)处理2:表示将整数与字符或 BINARY 串的所有四则运算都转换为 DEC(0,0)处理注:该参数只有在 USE_PLN_POOL 为 0 或 1时有效。当 USE_PLN_POOL 为 2 或 3 时,按照 CALC_AS_DECIMAL=2 处理 |
COMPATIBLE_MODE | 0 | 静态 | 是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA |
PK_WITH_CLUSTER | 1 | 动态,会话级 | 在建表语句中指定主关键字时,是否缺省指定为 CLUSTER,0:不指定;1:指定注:该参数对列存储表和堆表无效 |
ORDER_BY_NULLS_FLAG | 0 | 动态,会话级 | ASC 升序排序时,控制 NULL 值返回的位置。取值 0 或 1。1 表示 NULL 值在最后返回,0 表示 NULL 值在最前面返回。在参数等于 1 的情况下,NULL 值的返回与 ORACLE 保持一致。DESC 降序时该参数无效 |
PK_WITH_CLUSTER | 1 | 动态,会话级 | 在建表语句中指定主关键字时,是否缺省指定为 CLUSTER,0:不指定;1:指定注:该参数对列存储表和堆表无效 |
DATETIME_FAST_RESTRICT | 1 | 动态,系统级 | TO_DATE(字符串,FAST 格式)或ALTERSESSION 设置了 DATE 的格式为 FAST格式后,CAST 字符串 AS DATE 时:0: 字符串可以带时间;1.字符串不允许带时间,带时间会报错。其中 FAST 格式(标准格式)为:YYYY-MM-DD、YYYY/MM/DD、YYYY:MM:DD、YYYY.MM.DD |
动态和系统级说明:动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。
参考以下命令设置成兼容Oracle的配置
SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);
SP_SET_PARA_VALUE(2,'CALC_AS_DECIMAL',1);
SP_SET_PARA_VALUE(2,'ORDER_BY_NULLS_FLAG',1);
SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER',0);
sp_set_para_value(1,‘DATETIME_FAST_RESTRICT’,0);
文章
阅读量
获赞