达梦数据库使用问题与解决

引言

第一次系统性地学习如何操作DM数据库,具体步骤就不在本博客列出了,这里主要讲一下自己实操时遇到的坑以及如何解决

安装及使用总结

保证/tmp文件夹有足够的空间

tmp目录不足需要删除文件(root权限)
cd /tmp
rm -rf xxxx.xx

/tmp 1.5G可能仍然不够DM解压
root用户
vim /etc/fstab
输入
tmpfs /tmp tmpfs nodev,nosuid,size=4G 0 0
保存
mount /tmp
df -h
可以看到变成4G,可以解压了

保证文件打开数足够

ulimit -a
查看open files 文件打开数
过小会无法开启线程 导致软件启动不了
默认centos系统文件打开数1024 可以修改更大
dm一个连接会话是占用一个线程的 当业务并发量较大时,数据库无法创建新的连接。现网open files参数可以设置得大一点

ulimit -n
查看(设置)文件打开数 设置只对单个会话生效

生产环境下持久设置文件打开数
vim /etc/security/limits.conf
写入

dmdba soft nofile 102400
dmdba hard nofile 204800
root soft nofile 102400
root hard nofile 204800

manager等图形化工具打开不了

常见错误:

  • DISPLAY没有设置正确、报错权限不足(原因:使用root打开过图形化工具)
  • 核心已转储,检查DISPLAY,检查虚拟机本机是否xhost+
  • 检查$DM_HOME,是否为/dm8,如果不是退出dmdba用户会话至root会话,再进入一遍,记得再次设置DISPLAY
  • /usr/share/themes/kylin-black-theme/gtk-2.0 /gtkrc:817:找不到包含文件: “apps/caja.rc" 出现这个提示是正常的,依然可以进入图形化工具

安装rlwrap工具

rlwrap可以让你在Linux中,操作sql像在Win里一样上下翻滚等

  1. 安装readline
[root@dbserver ~]#yum install readline* -y
  1. 安装rlwrap
[root@dbserver ~]# tar -zxvf rlwrap-0.43.tar.gz
[root@dbserver ~]# cd rlwrap-0.43
[root@dbserver rlwrap-0.43]# ./configure
[root@dbserver rlwrap-0.43]# make
[root@dbserver rlwrap-0.43]# make install
  1. 修改配置文件使生效
[root@dbserver rlwrap-0.43]# vim /home/dmdba/.bash_profile
添加
alias disql='rlwrap disql'
alias dmrman='rlwrap dmrman'
[root@dbserver rlwrap-0.43]# source /home/dmdba/.bash_profile

记得,之后想要使用可滚动的,不要在bin目录下./disql,直接disql就好了

DMSQL相关

  • DM如果用了GROUP BY不用分组函数要报错,和ORACLE不一样

  • 和ORACLE类似的,GROUPBY后面要写上除了分组聚合函数所有查出列,select后可以少于group by中的字段,但不能包含group by中没有的字段是SQL语法规范

  • natural join 有几个同名列就用几个做等值连接 同名列不能有限定词/表前缀

  • 在数据库名或表名列名是小写时,调用一定要加上引号"xxx".“xxx”,因为数据库在初始化的时候选择是否大小写敏感,默认是大小写敏感。这时执行的 SQL 在到解释器那层解析时,会自动转换为大写名称

配置文件修改方式

  • READ ONLY只能手工修改

  • IN FILE 可以手工也可以SQL/函数改文件(spfile)

  • SYS可以手工也可以SQL/函数(system)改文件(spfile、memory、both)

  • SESSION可以手工也可以SQL/函数(system、session)改文件(spfile、memory、both)

一些日志相关概念

  • redo log(重做日志):每当操作时,在磁盘数据变更(即commit)之前,将操作写入redo log,这样当系统奔溃重启后可以继续执行。
  • undo log(回滚日志):当一个事务执行一半无法继续执行时,可以根据回滚日志将之前的修改恢复到变更之前的状态。
  • 落盘,就是将数据写入到磁盘。
  • 刷盘,并不是每次接收到数据后就将数据写入到磁盘,而是会先写入缓冲区,将缓冲区的数据写入到磁盘的过程,称为刷盘。

commit操作不一定会把内存中的数据刷到磁盘文件中
commit无法左右数据库何时把数据从缓冲区刷入到数据区,缓冲区的数据积累到一定程度,才批量刷入到磁盘中。
在这之前,断电内存丢失,DM会根据日志来恢复
在commit指令提交时,会把操作日志刷入到磁盘文件,所以就算断电,如果日志已经刷入到磁盘了,那DM重启的时候,会根据日志恢复,查询到的还是更新过的数据。

数据文件管理相关

  • 重做日志文件

    通过测试 alter database drop logfile 和 alter database delete logfile删除重做日志都报错,说明达梦数据库当前不支持删除REDOLOG

  • 归档日志文件

    可以通过select sf_archivelog_delete_before_lsn(xx);来删除xx之前的非活跃归档文件

对象权限相关

  • delete和update是要查询(select)权限的

  • insert不需要,但如果主键冲突时,系统还是会帮我们查(select)的

  • sysobjects表有模式和角色,没有视图

  • 用户默认模式不能删除,模式下有对象时不能直接删除(可以增加 cascade级联删除用户模式及模式下对象,生产环境慎用cascade,防治误删)

备份相关

  • 增量备份的基础备份集是上次(默认路径下的和添加路径下的)的全备

  • 默认增量备份是差异增量备份(BAS_BAK可以是增备也可以是全备)

  • 联机备份是必须要开归档的。如果开了关了一段时间再开,可能会归档不连续,需要删掉不连续的。有了归档不连续的情况,最好做一次全备。

IDEA 连接DM数据库

1.在IDEA界面点开右侧的数据库,点击添加驱动程序和数据源
在这里插入图片描述
在这里插入图片描述

2.点击驱动程序,默认会出现User Driver
在这里插入图片描述
3.修改名称,添加驱动程序,并修改类
在达梦数据库安装路径下找到并选择对应驱动包
在这里插入图片描述
在这里插入图片描述
4.点击数据源,点击添加,将刚刚的驱动程序加入
在这里插入图片描述

5.填写相关用户名密码和URL,点击左下角测试连接
在这里插入图片描述在这里插入图片描述
连接成功,然后我们就可以在IDEA里进行数据库操作了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值