达梦(DM)数据库常见问题详解
2.使⽤DM7如何寻求帮助?
在本版发帖,版主会第⼀时间回答您的问题
达梦24⼩时:400 991 6599
达梦技术社区:
达梦官⽅QQ:37727201,请注明来⾃itpub
给myth8860版主发站内消息
3.DM7安装注意事项
为了您的数据安全,安装设置密码时建议将密码设置为⼤于6位数,当前版本可能会因此导致不能创建数据库,后期版本会给予更友好的提⽰。
4.DM7是如何实现分页的?
DM7⽀持top、limit和rownum三种分页⽅式
5.DM7后台服务说明
DMservice服务是数据库核⼼服务
DMAMON服务是审计服务,⽤来做审计。在linux中下载mysql时冲突是什么
DMJMON服务是代理服务,⽤来做作业调度。
DMWMON服务是数据守护服务,⽤来做主备。
6.DM7 JDBC编程注意事项
// 定义DM JDBC 驱动串
String jdbcString = "dm.jdbc.driver.DmDriver";
// 定义DM URL 连接串
String urlString = "jdbc:";
7.命令⾏⼯具disql使⽤说明:
-
-查看帮助:
disql help
--登录
disql SYSDBA/SYSDBA
--注意事项:dm7密码是⼤⼩写敏感的
8.如何修改表名
alter table WE_EFFORT ALTER SCOPE_ENUM_ID1 rename to SCOPE_ENUM_ID;
9.达梦数据库⽀持JPA中实体类保存和更新操作吗?
怎么调⽤persist⽅法就会报出下⾯的异常
Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
解决办法:修改dm.ini配置⽂件,将BATCH_PARAM_OPT 参数改为0,重启即可
10.如何查询当前⽤户下所有的表名?
select NAME from sysobjects where "SUBTYPE='SCH');
11.有开源的客户端⼯具可以连DM么?
基于JDBC的⼯具就可以,⽐如:SQuirrel SQL、DbVisualizer
12..sql.SQLException: 语句句柄个数超上限(1024)或系统内存不⾜ 错误如何处理?
原因:不申请新的session,不停地申请语句句柄,超过了每个session可⽤语句句柄数的上限
解决办法:
治本:修改应⽤程序,每个语句句柄⽤完后,将句柄关闭
指标:修改dm.ini参数,提⾼session可⽤语句句柄的上限
max_session_statement由100改为1000
13.安装在 linux 5.5_64位上安装DM7,初始化库的时候报错:
Extract
java.lang.UnsatisfiedLinkError: /tmp/DMInstall/source/n/libdmutl.so: /tmp/DMInstall/source/bin/libdmutl.so: ELF file OS A invalid
原因:官⽹提供的达梦数据库版本是基于REDHAT6的, linux5.5的内核版本过低,建议使⽤2.6.32以上内核的linux版本。
14. DM7在初始化库的过程中需要注意哪⼏个重要参数?
(1) 页⼤⼩(page_size)
除去Clob、Blob等⼤字段外,数据库中⼀⾏记录的所有字段的实际长度的和不能超过页⼤⼩的⼀半。
建议页⼤⼩设置为16K,防⽌在后期进⾏数据迁移和开发过程中出现记录超长的问题;
(2) ⽇志⽂件的⼤⼩(log_size)
数据库redo⽇志⽂件的⼤⼩,单位为M,正式环境⽇志⽂件的⼤⼩⼀般设置为2048;
(3) 字符串⽐较⼤⼩写敏感(case_sensitive)
默认为⼤⼩写敏感的,根据具体情况进⾏设置。迁移实施中如果原始库为和数据库的话
需设置为⼤⼩写敏感,若为和MySQL数据库则需设置为⼤⼩写不敏感,所以在数据库
初始化库的过程中需要根据具体情况来选择。
注意事项:
在开发环境和测试环境的页⼤⼩、字符串⼤⼩写敏感等初始化参数⼀定要保持⼀致,避免使⽤.bak⽂件进⾏
还原的时候,因为初始化参数不⼀致导致⽆法还原的问题。所以在初始化库之前务必规划好上述参数,因为
页⼤⼩和字符串⽐较⼤⼩写敏感这两个参数⼀旦初始化完成,后期⽆法修改。如需修改,则只能删掉现有实例
重现初始化新的实例。
总结:
数据库在安装的过程中基本上就是下⼀步下⼀步,按照默认选项安装就好,安装路径根据⾃⼰的要求选择。
当数据库安装完成,在使⽤数据库配置助⼿dbca⼯具初始化库的过程中,其它步骤按照默认选项下⼀步即可,
当到这个页⾯时需要注意以下三个参数的设置,其它参数如⽆特殊要求按照默认选项就好。
15. 何为字符串⽐较⼤⼩写敏感?
关于字符串⽐较⼤⼩写敏感主要涉及到两个⽅⾯的内容:
(1) 对字段的值⽐较⽽⾔
假如表Test中有如下两条记录
c1 c2
1 a
2 A
同样的查询语句:select * from Test where c2 = 'a';
在⼤⼩写不敏感的库中会查出如下的两条记录
c1 c2
1 a
2 A
⽽在⼤⼩写敏感的库中则只会查出如下的⼀条记录
C1 C2
1 a
(2) 对于表名、字段名⽽⾔
在设置为⼤⼩写敏感的库中进⾏查询的时候,可能经常会遇到⽆效的表名或列名的问题,
下⾯针对这种情况进⾏说明。
(i) 如果使⽤DM管理⼯具图形界⾯建表的话建议表名和字段名都使⽤⼤写。因为使⽤图形界⾯建表相当于
使⽤语句建表的时候加了双引号的,会固定住⼤⼩写。如果写成⼩写,那么就是⼩写了,在查询的时候
也需要加双引号,否则就有可能报⽆效的表名或列名的问题,⽐较⿇烦;
(ii) 如果使⽤脚本建表的话,如果表名和字段名没有加双引号的话都会被系统⾃动转换成⼤写。
如:create table test(a int);系统会⾃动把表名test,字段名a转换成⼤写,处理⽅式与Oracle数据库⼀致。
所以针对⼤⼩写敏感的库,在使⽤建表脚本或者通过查询脚本进⾏查询的时候建议统⼀不要写双引号,
让系统统⼀⾃动都转化为⼤写;
(iii) 以上两点主要针对⼤⼩写敏感的库⽽⾔,⼤⼩写不敏感的库则不存在上述问题。
总结:基于以上两点,在初始化数据库的过程中就可以对字符串⽐较⼤⼩写敏感这个参数做出合理的选择了。
16. DM7是否需要设置所谓的外⽹IP?
DM7是不需要设置外⽹IP的,只要⽹络畅通,相应端⼝(默认端⼝为5236)开放的情况下就可以访问。
17. DM7是否⽀持增量备份?第三⽅管理⼯具是不是好⽤些?
DM7⽀持增量备份,详细内容请参考DM_DBA.pdf⼿册的第31章 备份和还原的相关章节。
个⼈觉得数据库本⾝⾃⼰做的增量备份肯定⽐所谓的第三⽅⼯具更稳定可靠。
18. DM7数据库管理员SYSDBA⽤户的密码忘记了能否回?
(1) 原则上数据库管理员SYSDBA⽤户的密码忘记了是⽆法回的;
(2) 极个别特殊的情况可能需要通过研发从源码层⾯进⾏修改,从⽽跳过密码认证这块;
温馨提⽰:
(1) 数据库管理员SYSDBA密码修改后⼀定要牢记,默认密码为SYSDBA(密码严格区分⼤⼩写)。
(2)  如果数据库中还有其它的⽤户,可以尝试在数据迁移⼯具DTS中使⽤其它⽤户登录,把数据库中
相关⽤户的数据迁移到新的实例对应的⽤户中。
19. DM7如何判定当前库中⼀个表是否存在?
可以通过查询DBA_TABLES或ALL_TABLES,如果要查询某个⽤户下某个表是否存在,可以通过OWNER列进⾏限定。如:查询⽤户TEST下是否存在表TAB,SQL脚本如下
select * from DBA_TABLES where owner = 'TEST' and table_name = 'TAB';
注:
(1) 关于DBA_TABLES中每个字段的具体含义可以参考DM_DBA.pdf⼿册_附录3 兼容视图;
(2) 为了提⾼ DM7与ORACLE 的兼容性,DM7提供了较为丰富的与Oracle兼容的视图。
20. DM7如何配置归档?
DM7配置归档的详细操作步骤如下:
(1) 打开dm.ini中的归档开关:ARCH_INI=1;
(2) 在数据⽂件⽬录data/DAMENG下配置dmarch.ini,内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #归档类型 LOCAL/REALTIME
ARCH_DEST = d:\dmdbms\data\DAMENG\ARCH #归档⽬标路径(注意实际路径)
ARCH_FILE_SIZE = 1024 #单个归档⽂件⼤⼩,单位Mb,缺省128M
ARCH_SPACE_LIMIT = 10240 #REDO⽇志归档空间限制,单位为Mb,0表⽰⽆限制
(3) 重启数据库服务器
完成上述三步则就完成了DM7归档的配置。
关于每个参数具体含义介绍:
(i) ARCH_TYPE 归档类型,对于单机的数据库配置归档⽽⾔,基本就是本地归档(LOCAL),如果涉及到DM7
其它集的配置时,则会涉及到其它的归档类型;
(ii) ARCH_DEST 归档⽬标路径,⼀般专门新建⼀个归档⽂件夹存放归档⽂件,这样产⽣的归档⽂件就会放到
该归档⽂件夹中;
(iii) ARCH_FILE_SIZE 单个归档⽂件的⼤⼩,数据库在运⾏的过程中会产⽣归档⽂件,当单个归档⽂件的⼤⼩
达到1024M时,系统会⾃动切换写下⼀个归档⽂件;
(iiii) ARCH_SPACE_LIMIT 归档空间限制,⾸先需要说明的⼀点就是归档⽂件是循环写的,上⾯已经提到了当
单个归档⽂件的⼤⼩达到1024M时,系统会⾃动切换写下⼀个归档⽂件。随着系统的运⾏归档⽇志⽂件
会越来越多,当达到归档空间限制之后,系统会⾃动删除⽼的归档⽂件。⽽关于这个归档空间限制的⼤⼩
⼀般需要结合备份策略来考虑,基本的设置的原则是⾄少要能够容纳下2~3个全库全库备份间的所有归档。
21. DM7如何屏蔽保留字?
⽅法⼀:双引号法
这个⼀般可以⽤来处理建表语句中的保留字冲突,如表名或者字段名是DM7的保留字。这种⽅法⼀般可以
快速地绕过问题,但是对于⼤⼩写敏感的库,这种⽤双引号的⽅法会固定死字段⼤⼩写,对于⼩写的字段,
可能会带来⽆效的表名或者列名的问题。
⽅法⼆:dm.ini中的参数设置
在dm.ini中有个参数EXCLUDE_RESERVED_WORDS,这个参数可以⽤来屏蔽你想要屏蔽的保留字,将需要屏蔽
的保留字写在=号后⾯,然后以逗号分隔。设置在dm.ini中的好处就是⼀旦设置,永久⽣效⽽且对所有客户端都有效,
这样就不需要在所有客户端系统中进⾏专门配置。但是设置在dm.ini中之后,这个保留字就永久性失效了,哪怕你想
通过manager客户端⼯具在本地连接也没⽤了。⽽且该⽅式还存在⼀个隐患就是由于屏蔽掉了⼀些系统的保留字,
所以可能会导致系统的⼀些功能⽆法正常使⽤。
建议:
在移植过程中遇到DM7的保留字,最好的处理⽅式还是对这些保留字进⾏修改,尽量不要使⽤DM7的保留字。
22. 在安装DM7的过程中出现错误 ELF file OS ABI invalid 该如何解决?
解决办法:报这个错误说明安装的数据库版本与操作系统版本不匹配,需我们商务⼈员重新申请相匹配的数据库版本。
23. 使⽤DM7时如何进⾏导⼊导出?
建议通过命令⾏的⽅式进⾏导⼊导出。详细可参见:DM_DBA.pdf⼿册 第31章 备份和还原 中逻辑备份和逻辑还原的
相关章节。
24. DM7如何关闭⼀个session?
可以通过调⽤⼀个系统函数SP_CLOSE_SESSION来关闭⼀个session。
函数定义:
VOID SP_CLOSE_SESSION(SESSION_ID INT)
功能说明:
停⽌⼀个活动的会话
参数说明:
SESSION_ID:会话 ID
举例说明:
SP_CLOSE_SESSION(510180488);
25. DM7有类似于Oracle的AWR分析报告吗?
有的,详细请参考DM_SQL.pdf⼿册中 21.25 DBMS_WORKLOAD_REPOSITORY包中的相关内容和⽰例说明。
26. Oracle中raw类型在DM7中可以⽤哪种类型代替?
Oracle中raw类型在DM7中可以使⽤varbinary代替。
27. 如何扩展数据库的redo⽇志?
调整数据库redo⽇志的⼤⼩,如将2个redo⽇志都扩展到2G(注意redo⽇志的实际路径)。使⽤SYSDBA⽤户登录,
然后执⾏如下脚本:
alter database resize logfile 'D:\dmdbms\data\DAMENG\DAMENG01.log' to 2048;
alter database resize logfile 'D:\dmdbms\data\DAMENG\DAMENG02.log' to 2048;
28. DM7数据库如何进⾏卸载?
在使⽤DM7的过程中,有时候我们可能需要卸载DM7后重新安装新的数据库版本,下⾯简单讲述如何正常卸载
DM7数据库。
前提条件:在进⾏卸载达梦数据库之前,先正常关闭达梦数据库。
Windows环境:
⽅法1:在Windows的 开始 -> 所有程序 -> 达梦数据库 -> 卸载;
⽅法2:在达梦数据库的安装⽬录,如D:\dmdbms⽬录下可以看到达梦数据库的卸载程序,双击该
程序也可以完成卸载。
注意事项:先保证达梦数据库处于关闭状态然后再进⾏卸载,否则Windows服务窗⼝中达梦数据库注册的⼀些服务和
注册表中的⼀些信息可能⽆法正常删除,这样可能会给下⼀次的安装带来⿇烦。
Linux环境:
⽅法1:图形界⾯卸载
如果可以直接接触Linux服务器的桌⾯,在桌⾯上会有⼀个DMDBMS的⽂件夹,⾥⾯也有卸载的图标,
双击即可完成卸载,与Windows的界⾯风格完全⼀致;
⽅法2:字符界⾯卸载
在达梦数据库的安装⽬录,如/opt/dmdbms⽬录下有⼀个卸载脚本uninstall.sh,在Linux终端中执⾏命令
./uninstall.sh -i 即可以字符界⾯完成对达梦数据库的卸载。
注意事项:先保证达梦数据库处于关闭状态然后再进⾏卸载。
29. DM7存储过程和语句块中如何进⾏打印? begin
print '使⽤print语法打印';
end;
--使⽤dbms_output包打印⾸先需要创建系统包:
SP_CREATE_SYSTEM_PACKAGES(1);
--然后开启这个打印的包:
able;
begin
dbms_output.put_line('使⽤dbms_output包语法打印');
end;
30.linux系统下 达梦数据库设置为开机⾃启动怎么设置?
修改启动脚本,将DM启动脚本DmServiceXXXXX 移到/etc/init.d下,chkconfig DmServiceXXXXX on
确认此数据库能以dmdba⽤户正常前台启动后(必须步骤),操作步骤如下:
第⼀步:复制数据库实例服务脚本dmserverd,命名为DmInstanceServiceDAMENG并修改,修改path值为dm.ini路径(必须),dm_home设置为dm主程序安装路径(必须),svc_porg设置为数据库实例名(可选推荐)。
第⼆步:将脚本DmInstanceServiceDAMENG 复制到 /etc/rc.d/init.d ⽬录下。
|
cp /opt/dmdbms/bin/DmInstanceServiceDAMENG /etc/rc.d/init.d/DmInstanceServiceDAMENG
|

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。