注册
达梦数据库兼容Oracle相关配置
专栏/Database Thinking/ 文章详情 /

达梦数据库兼容Oracle相关配置

胡li 2022/04/08 10947 6 2
摘要 数据库初始化参数BLANK_PAD_MODE参数只有在数据库初始化时配置,初始化后无法进行修改,如果需要修改必须重新初始化数据库。开启该参数可兼容Oracle空格填充行为,如‘a’和‘a ’不是同一条数据

BLANK_PAD_MODE默认值

我们先来看下BLANK_PAD_MODE为默认值时,DM数据库查询’A’的返回情况
步骤一:先确认BLANK_PAD_MODE为0
image.png
步骤二:insert两条数据
image.png
步骤三:查询验证
image.png
可以看到,默认值的情况下,DM数据库认为’A’和’A '是一条数据

BLANK_PAD_MODE=1

步骤一:查看参数设置为1
image.png

步骤二:insert两条数据
16494035891.png

步骤三:查询验证
image.png
可以看到行为发生改变,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的参数

参考以下命令设置成兼容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);
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服