达梦数据库之disql体验优化

前言

作为运维过MySQL或者Oracle的DBA来说,在Linux版本的数据库安装完成之后,可能通常更喜欢使用其自带的命令行工具进行数据库连接,并进行一些常规的数据库操作。所以,在安装完达梦数据库之后,大家可能顺理成章的也会使用disql进行数据库的日常操作。这时,可能会遇到一些使用上的小问题,总感觉DM的disql工具有那么一些些的不顺手,本篇文章总结了一些大家可能会遇到的问题,希望对大家使用disql有所帮助。

快速启动

在安装完DM数据库之后,我们通常会切换到dmdba这个用户对数据库进行操作。(希望大家也养成这样一个好习惯,因为这样可以避免安全问题和一些莫名其妙的权限问题),在命令行输入disql后回车,提示找不到该命令。

[root@localhost ~]# su - dmdba
Last login: Mon Feb 28 14:50:07 CST 2022 on pts/2
[dmdba@localhost ~]$ disql
bash: disql: command not found...

经常使用Linux的同学可能会知道,这应该是没有正确设置disql可执行程序的路径到PATH环境变量,那么,我们现在就把达梦数据库的bin目录设置的dmdba用户的.bash_profile环境变量文件中。

# 编辑环境变量文件
[dmdba@localhost ~]$ vim ~/.bash_profile

#添加如下两行记录,其中DM_HOME表示DM数据库的安装路径
DM_HOME=/opt/dmdb/dmdbms
export PATH=$PATH:$DM_HOME/bin

# 使用source命令,让配置文件立即生效
source ~/.bash_profile

[dmdba@localhost ~]$ disql
disql: error while loading shared libraries: libdisql_dll.so: cannot open shared object file: No such file or directory

在配置PATH环境变量生效之后,执行disql又报错,提示不能找到共享库文件。网上有朋友说cd到达梦的bin目录再执行disql即可解决。果然,当我们cd到DM数据库的bin目录下之后再启动disql,就能正常启动了。

[dmdba@localhost dmdb]$ cd $DM_HOME/bin
[dmdba@localhost bin]$ disql
disql V8
用户名:

不过,这好像失去了配置PATH变量后在任何目录都能启动disql的便利性。其实,出现上述错误的环境是因为LD_LIBRARY_PATH还没有将DM的bin目录加入,因为disql程序引用了该路径的库文件。

# 编辑环境变量文件
[dmdba@localhost ~]$ vim ~/.bash_profile

#添加如下记录,其中DM_HOME表示DM数据库的安装路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

# 使用source命令,让配置文件立即生效
source ~/.bash_profile

[dmdba@localhost dmdb]$ disql
disql V8
用户名:

至此,快速启动disql圆满的问题解决了。

删除键无效

在disql使用过程中,有的同学打错了命令,想利用键盘上的backspace删除回退键修改,却遭到了无情的拒绝,就像下面这样:

# 或者出现^[[3~乱码
[dmdba@localhost ~]$ disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.471(ms)
SQL> creattee^[[3~^[[3~^[[3~^[[3~  

# 或者出现^H的乱码
[dmdba@localhost ~]$ disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.407(ms)
SQL> created^H^H^H^H

出现该问题通常是因为大家使用的SSH命令行终端工具键盘设置问题,一般可以在xshell等工具的【当前会话属性】→ 【终端】→【键盘】→【BACKSPLACE键序列】选择使用ASCII 127即可解决。

结果集输出到文件

有些SQL查询返回的结果太长,可能在命令行上查看不太方便,这个时候我们可以将查询结果输出到一个文件中,拷贝到windows个人电脑上利用强大的文本编辑器进行查看,此时,可以使用spool命令导出输出结果到指定文件

SQL> spool /tmp/tablespace_useage.txt
SQL> select * from SYS.DBA_FREE_SPACE;
# 还可以就本地临时调用操作系统命令(less、more、cat等等)验证导出结果
SQL> host more /tmp/tablespace_useage.txt

更强大的disql命令行

有时候执行的命令实在太多,想要复制之前执行的SQL命令。又或者输入了很长的SQL之后发现其中一个字母顺序写反了,你想将光标移动回去仅仅修改某处错误的地方

上一篇:go语言学习笔记 之 协程(goroutine)


下一篇:【解决异常】无法通过localhost:8080进入