注册
达梦数据库DISQL工具的使用
专栏/培训园地/ 文章详情 /

达梦数据库DISQL工具的使用

小谢姐姐😘 2023/12/22 3717 1 0
摘要

DIsql 是 DM 数据库的一个命令行交互式客户端工具,用来与 DM 数据库服务器进行交互。DIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录的bin目录下找到该命令。(其实disql就是类似oracle的sqlplus工具)
当我们的操作环境没有可用的图形化界面时,可通过安装一个disql工具进行命令行的操作使用。

1. disql连接数据库实例

disql连接数据库共有以下3种方式。

连接默认的DM实例

disql不指定端口的情况下,默认连接的是5236端口(如果实例并非默认的5236端口,则必须指定端口号)
image.png

注意:linux环境下,如果密码中包含特殊字符,需要使用双引号将密码包含进来,同时外层再使用单引号进行转移,具体示例如下:

$ disql SYSDBA/'"abcd@efgh"'
$ disql SYSDBA/'"abcd@efgh"'@127.0.0.1:5236

使用IP地址和端口连接实例
image.png
使用service name连接实例

service nameb必须先在配置文件(/etc/dm_svc.conf)中进行配置,需root用户才能修改:

[root@biserver ~]# vi /etc/dm_svc.conf
[root@biserver ~]# cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
dmdw=(192.168.10.192:5236)

再用配置好的service name进行登陆(service name大小写不敏感)
image.png

2. disql环境变量设置

使用 SET 命令可以对当前 DIsql 的环境变量进行设置。常用环境变量设置命令如下:
设置当前 session 是否自动提交

SET AUTO[COMMIT]  <ON|OFF>

是否回显当前SQL语句查询或修改的总行数

SET FEED[BACK]  <6(默认值)|n|ON|OFF>

设置是否显示列标题

SET HEA[DING]  <ON(默认值)|OFF>

设置查询结果是否显示行号

SET LINESHOW   <ON(默认值)|OFF >

设置一页显示有多少行数

SET PAGES[IZE]  < 14(默认值)|n>

设置屏幕一行显示的宽度

SET LINESIZE  <screen_length(默认值,屏幕宽度)|n>

在块中有打印信息时,是否打印,以及打印的格式。设置之后,可以使用DBMS_OUTPUT包打印

SET SERVEROUT[PUT] <ON | OFF(默认值)> 
[SIZE <20000(默认值)|n>]
[FOR[MAT] <WRA[PPED] | WOR[D_WRAPPED](默认值) | TRU[NCATED]>]
ON/OFF:是否打印。
SIZE:打印的最大长度。
WORD_WRAPPED:按照单词分隔。
TRUNCATED:单词被截断。
FORMAT:按照服务器返回的显示,不做格式化。

控制台是否打印 SQLCODE 返回值

SET SQLCODE  <ON|OFF(默认值)>

显示每个SQL语句花费的执行时间

SET TIMING  <ON(默认值)|OFF>

SHOW 命令查看环境变量

SHOW <system_variable>{<system_variable>}

3. disql常用命令

帮助命令 help

SQL> HELP 命令
SQL> help describe

 DESCRIBE
 --------

 获取表或视图、存储过程、函数、包、记录、类的结构描述。

 用法: DESC[RIBE] [模式名.]对象名

输出文件 SPOOL

SQL> spool /home/dmdba/out.dat
SQL> select count(*) from sysobjects;

行号     COUNT(*)            
---------- --------------------
1          867

已用时间: 1.507(毫秒). 执行号:58400.
SQL> spool off
SQL> exit


[dmdba@biserver ~]$ cat /home/dmdba/out.dat
SQL> select count(*) from sysobjects;

行号     COUNT(*)            
---------- --------------------
1          867

已用时间: 1.507(毫秒). 执行号:58400.
SQL> spool off
[dmdba@biserver ~]$ 

注意:只有SPOOL OFF之后,才能在输出文件中看到输出的内容。

执行操作系统命令

在disql环境中,通过host命令,可以直接执行操作系统的命令。

SQL> host df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G   28G   23G   56% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G  140K  7.8G    1% /dev/shm
tmpfs                    7.8G   82M  7.7G    2% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1                497M  157M  340M   32% /boot
/dev/mapper/centos-home   46G  213M   46G    1% /home
tmpfs                    1.6G   44K  1.6G    1% /run/user/0
/dev/loop0               911M  911M     0  100% /mnt/cdrom

SQL> host ps -ef|grep dm.ini
dmdba     2013  1909  0 21:43 pts/2    00:00:00 sh -c ps -ef|grep dm.ini
dmdba     2015  2013  0 21:43 pts/2    00:00:00 grep dm.ini
dmdba    13615     1  0 6月29 ?       00:07:24 /opt/db/dm/dmdbms/bin/dmserver path=/opt/db/dm/dmdbms/data/DMDB/dm.ini -noconsole

4. disql执行sql脚本

disql连接语句中直接执行sql语句

[dmdba@biserver ~]$ disql SYSDBA/SYSDBA \`/home/dmdba/test.sql

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.048(ms)
disql V8
SQL> select count(*) from sysobjects;

行号     COUNT(*)            
---------- --------------------
1          867

已用时间: 0.580(毫秒). 执行号:58500.
SQL> 

disql连接到实例后,有两种方式执行sql脚本(start命令和`字符):

SQL> `/home/dmdba/test.sql
SQL> select count(*) from sysobjects;

行号     COUNT(*)            
---------- --------------------
1          867

已用时间: 0.272(毫秒). 执行号:58501.
SQL> start /home/dmdba/test.sql
SQL> select count(*) from sysobjects;

行号     COUNT(*)            
---------- --------------------
1          867

已用时间: 0.197(毫秒). 执行号:58502.
SQL> 
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服