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