好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 wshy3366 于 2020-12-18 15:34 编辑
使用达梦数据库一段时间了,有些日常小细节需要注意,总结如下:
1、求一个平均数 select 3/2 from dual oracle得到的是1.5,达梦得到的1,这是因为DM对于长度小于10位的整数,默认为INT类型。DM7当做INT处理,返回INT。
解决方案:
(1)修改dm.ini参数COMPATIBLE_MODE=2,兼容Oracle的NUMBER(详情请参考《DM7系统管理员手册》)
可以通过执行DM函数修改:sp_set_para_value(2,'COMPATIBLE_MODE',2),注意:修改后需要重启数据库才能生效
修改后可以查询相关的视图进行确认。 最主要的视图是:1)V$PARAMETER:显示 ini 参数和 dminit 建库参数的类型及参数值信息(当前会话值、系统值及 dm.ini
文件中的值)。
2)v$dm_ini:所有 ini 参数和 dminit 建库参数信息。 但这个视图查询的内容有点多,DM提供了分类的视图,比如V$DM_ARCH_INI,查询归档的相关参数值。 (2)将INT转为NUMBER select 3.0/2.0 from dual工作中采用的是第一种方法,避免了INT转NUMBER的操作,同时兼容了oracle。
另外还要注意,mybatis中返回变量要类型设置为java.lang.Float,jdbcType设置为DECIMAL就可以正常展示了
<result column="avg_remark_per_case" property="remarkCntPerCase" javaType="java.lang.Float" jdbcType="DECIMAL"/>
(3)如果以上方法还不能解决,尝试将CALC_AS_DECIMAL设置为1并重启数据库
2、全库导出后导入提示该工具不能解析此文件,请使用更高版本的文件
原因解析:说明导入人使用的dimp版本老了
解决方案:数据库导出的库的数据库软件安装目录下的dmdbms/bin文件夹整个打包发给导入的人,然后导入人在本地上使用这个包来导入。这样做的目的是想通过替换bin文件夹来升级dimp工具然后再导入。
另外要注意:导入的模式要保持一致,否则会新创建一个导出时使用的模式,无法导入到要求的模式下
3、查询语句中IS NOT NULL不起作用和1一样,也是设置为兼容模式
4、创建用户后登录总提示密码不对
发现是DM默认密码是大写,登录的时候输入大写就能登录了。
可以通过以下sql查看数据库是否大小写敏感。SELECT SF_GET_CASE_SENSITIVE_FLAG() --1:敏感 0:不敏感
5、还有其他一些问题,待续
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|