当前位置: 首页 > news >正文

[DM8] 达梦8配置兼容Oracle

查看版本信息

select *,id_code from v$version;

查询解释: DM Database Server 64 V8 1-1-190-21.03.12-136419-ENT 64 版本位数标识,64表示为64位版本,无64则表示为32位版本 V8 大版本号,目前主要是V7、V8 1-1-190 小版本号,表示8.1.1.190 ENT 版本标识, ENT表示企业版,还有STD标准版,SEC安全版,(其他标识为非通用的定制版)

查看基础信息

-- 1.字符集;UTF-8;安装选项
SELECT '字符集',DECODE(UNICODE,'0','0-GB18030','1','UTF-8','2','EUC-KR') union
-- 2.大小写敏感;Y-敏感;安装选项
SELECT '大小写敏感',DECODE(SF_GET_CASE_SENSITIVE_FLAG,'0','N-不敏感','1','Y-敏感') union
-- 3.char是否以字符为单位;0-否;安装选项
SELECT 'char是否以字符为单位',DECODE(PARA_VALUE,0,'0-否',1,'1-是') FROM V$DM_INI WHERE "V$DM_INI".PARA_NAME='LENGTH_IN_CHAR' union
-- 4.页大小,DM建议32K;32KB;安装选项
select '页大小',page()/1024||'KB' union
-- 5. 兼容性;2-Oracle;执行如下语句修改:SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);若特殊参数显示NULL,重启解决
select '数据库兼容',DECODE(PARA_VALUE,0,'不兼容',1,'1-SQL92',2,'2-Oracle',3,'3-MSSQLServer',4,'4-MySQL',5,'5-DM6',6,'6-Teradata') from v$dm_ini where para_name='COMPATIBLE_MODE' union
-- 6.其他,关键字,特殊参数;;随兼容性变化
select '关键字过滤',PARA_VALUE from v$dm_ini where para_name='EXCLUDE_RESERVED_WORDS' union
--7. 空格填充,Oracle兼容必选1;1;安装选项
select '空格填充',PARA_VALUE from v$dm_ini where para_name LIKE '%BLANK_PAD_MODE%';

参数详解

BLANK_PAD_MODE参数说明

设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。 取值: 1 兼容; 0 不兼容。默认为 0。可选参数。修改参数需重装库

LENGTH_IN_CHAR参数说明

参数初始化后不可以修改,如需修改,请重新初始化。

VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y 表示是,0、N 表示否。默认值为 0。可选参数。

1 或 Y:是,所有 VARCHAR 类型对象的长度以字符为单位。这种情况下,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。所以会出现实际可插入字符数超过定义长度的情况(超过的时候往往是因为有数字或是英文字符占位较少造成的),这种情况也是允许的。同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188;

0 或 N:否,所有 VARCHAR 类型对象的长度以字节为单位。

数据库中设定LENGTH_IN_CHAR为1或Y时,字段长度没有超过8188时,其实际的占用的字节长度根据ASCII字符+CHARSET/UNICODE_FLAG参数定义的字符集单字符的宽度*该种字符数。

COMPATIBLE_MODE参数说明

--达梦数据库设置NULL与空串等价

达梦数据库默认NULL与空字符串不等价,而Oracle是默认NULL与空串等价的,当代码里以某个值为空来进行查询时,有可能判断的条件是NULL或空串,本来NULL与空串都算空但最后查出两种情况(如NULL不能把空串查询出来,空串不能把NULL查出来)

解决方法

1.查询条件把NULL及""都加上中间用||连接

2.直接改达梦数据库的配置

修改dm.ini 文件 COMPATIBLE_MODE = 2 ,重启服务即可

或者执行

SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);

注意事项

SP_SET_PARA_VALUE(scope,para_name,para_value);

scope:表示范围,有两个取值,1表示动态参数,2表示静态参数;(由上面可知数据库兼容模式是静态参数);

para_name:表示要修改的参数名称;

para_value:表示要修改的值;

http://www.lryc.cn/news/278761.html

相关文章:

  • 【Pytorch简介】1.Introduction 简介
  • 什么是Session以及如何在 NestJS 项目中的优雅管理 Session
  • 高级分布式系统-第6讲 分布式系统的容错性--故障/错误/失效/异常
  • 网络多线程开发小项目--QQ登陆聊天功能(服务端推送新闻、离线留言和文件)
  • Jtti:有哪些方法可以提升Tomcat的性能?
  • LeetCode 2085. 统计出现过一次的公共字符串
  • 130基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原
  • Flying HTML生成PDF添加水印
  • MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces(临时表空间)
  • 轴承滚珠故障的理论推导与计算(修订中...)
  • NVMe系统内存结构 - PRP与PRP List
  • 系列二、Spring Security中的核心类
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpRequest 提取请求行、解析请求行和优化 以及解析请求头并存储
  • 数据结构-测试1
  • 【设计模式】01-前言
  • SpringBoot源码分析
  • 约数个数和约数之和算法总结
  • 数据结构-怀化学院期末题(322)
  • 小手也能用的高性能鼠标,自定义空间还挺高,雷柏VT9Pro mini上手
  • CDN加速原理详解
  • sqlachemy orm create or delete table
  • 科普小米手机、华为手机、红米手机、oppo手机、vivo手机、荣耀手机、一加手机、realme手机如何设置充电提示音
  • zookeeper应用场景之分布式的ID生成器
  • Java--Spring项目生成雪花算法数字(Twitter SnowFlake)
  • 紫光展锐M6780丨画质增强——更炫的视觉体验
  • 控制el-table的列显示隐藏
  • 2024上海国际冶金及材料分析测试仪器设备展览会
  • 商业定位,1元平价商业咨询:豪威尔咨询!平价咨询。
  • 2. Presto应用
  • 工业级安卓PDA超高频读写器手持掌上电脑,RFID电子标签读写器