暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦DIsql

原创 毛毛 2020-05-26
1086

DIsql工具是一款类似于SQL*Plus的工具,这里介绍如何启动DIsql并成功登录到数据库、如何远程登录到其他数据库、如何使用以及如何退出DIsql。
启动DIsql
为了使用DIsql,必须首先要启动DIsql。DIsql工具可以广泛用于各种操作系统,如WINDOWS、LINUX等。启动之后,当出现“SQL&gt”符号时,用户就可以利用DM提供的SQL语句和数据库进行交互操作了,需要注意的是,在DIsql中SQL语句应以分号“;”结束。对于执行语句块,创建触发器,存储过程,函数,包,模式等时需要用“/”结束。
1.1在WINDOWS系统中启动DIsql
WINDOWS环境下,有两种启动DIsql的方式。第一种是启动安装软件后生成的程序菜单,第二种是启动安装目录下自带的DIsql工具。
1.1.1程序菜单启动
如果在WINDOWS环境中安装了DM数据库产品,那么可以在应用菜单中找到SQL交互式查询工具,直接双击即可启动。然后使用LOGIN或CONN命令登录到指定数据库。LOGIN或CONN命令下文有详细介绍。以LOGIN为例,登录到IP地址为10.18.30.190的机器上,用户名和密码为:SYSDBA/SYSDBA,端口号为5236。其他全部敲回车,采用缺省输入。密码不会回显到屏幕上。

disql V7.1.6.48-Build(2018.03.01-89507)ENT
SQL&gt login
服务名:10.18.30.190
用户名:sysdba
密码:
端口号:5236
SSL路径:
SSL密码:
UKEY名称:
UKEY PIN码:
MPP类型:
是否读写分离(y/n):n
协议类型:
服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间 :380.428(ms)
SQL&gt
也可以全部直接回车,采用缺省输入,登录到本地DM数据库。缺省值请参考下文LOGIN命令
1.1.2自带DIsql工具启动
DIsql工具位于DM数据库安装目录的bin子目录下,例如DM数据库的安装目录为E:\dmdbms,则DIsql位于E:\dmdbms\bin\DIsql.exe。双击启动,然后输入用户名、密码,就可登录到本地DM数据库实例。密码不会回显到屏幕上。也可以全部直接回车,采用缺省输入,缺省值为SYSDBA/SYSDBA。

disql V7.1.6.48-Build(2018.03.01-89507)ENT
用户名:sysdba
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 58.363(毫秒)
Connected to: DM 7.1.6.48
SQL&gt
如果后续操作想登录到其他DM数据库实例,可使用LOGIN或CONN命令。

SQL&gt conn sysdba/sysdba@10.18.30.190:5236
服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间: 23.443(毫秒)
1.2命令行启动DIsql
命令行启动DIsql适用于任何操作系统平台。

1.2.1命令行启动
从命令行启动DIsql并登录到数据库。在命令行工具中找到DIsql所在安装目录D:\dmdbms\bin,输入DIsql和登录方式后回车。登录方式在下一节详细介绍。登录界面如下:
windows平台

C:\Users\Administrator&gtE:
E:&gtcd dmdbms\bin
E:\dmdbms\bin&gtdisql sysdba/xxzx@10.18.30.190:5236
服务器[10.18.30.190:5236]:处于普通打开状态
登录使用时间: 17.195(毫秒)
disql V7.1.6.48-Build(2018.03.01-89507)ENT
Connected to: DM 7.1.6.46
SQL&gt
Linux平台

[dmdba@cs1 bin]$ ./disql sysdba/xxzx@10.18.30.190:5236
Server[10.18.30.190:5236]:mode is normal, state is open
login used time: 10.709(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT
Connected to: DM 7.1.6.46
SQL&gt
1.2.2 DIsql登录方式
DIsql的登录方式。
语法如下:

DIsql [ [<option&gt] [<logon&gt | /NOLOG] [<start&gt] ]
<option&gt::=HELP|-H|-S
<logon&gt::=<username&gt[/<password&gt][*<MPP_TYPE&gt][@<server&gt][:<port&gt][?{UDP|TCP}]
[#<sslpath&gt@ssl_pwd]
<start&gt::=<运行脚本&gt|<start运行脚本&gt|<直接执行语句&gt <运行脚本&gt::=`<file_path&gt [<PARAMETER_VALUE&gt{ <PARAMETER_VALUE&gt}]
<start运行脚本&gt::=START <file_path&gt [<PARAMETER_VALUE&gt{ <PARAMETER_VALUE&gt}]
<直接执行语句&gt::= -E “<SQL语句&gt{;<SQL语句&gt}”
文中语法符号规定:<&gt内的内容是必选项;
[]内的内容是可选项;{}内的内容可以出现一次或多次
|为或者;::=为定义符。后文语法用法与此相同。
DIsql登录方式参数介绍
HELP|-H|-S
HELP或-H表示显示DIsql版本信息和帮助信息;-S表示设置DIsql界面为隐藏模式,隐藏命令的<SQL&gt标识符。

[dmdba@cs1 bin]$ ./disql -h
disql V7.1.6.46-Build(2018.02.08-89107)ENT
DISQL usage1:disql -h show disql version and help message
DISQL usage2:disql [ [<option&gt] [{logon | /nolog}] [<start&gt] ]
<option&gt:-S set no show model, hidden disql flag
<logon&gt : {<username&gt[/<password&gt][*<MPP_TYPE&gt][@<connect_identifier&gt] | /} [AS <SYSDBA|SYSSSO|
SYSAUDITOR|AUTO&gt]
<connect_identifier&gt :{[<SERVER&gt][:<PORT&gt][?{UDP|TCP|IPC|RDMA}][#<sslpath&gt][@<sslpwd&gt]}
if ipv6 address,[] is needed. For example [fe80::1e6f:65ff:fed1:3724%6]
<start&gt : <filename&gt[<parameter&gt ...] run disql bash /NOLOG option can run disql, while not connected to DM server <username&gt 指定数据库的用户名。缺省用户名为SYSDBA。 <password&gt 指定数据库的密码。缺省密码为SYSDBA。输入密码时,如遇到特殊字符需要特别处理。特殊字符包括关键字符和双引号等。特殊字符的处理见下文。 <MPP_TYPE&gt 指MPP类型。MPP 类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值为GLOBAL和LOCAL,默认为GLOBAL。GLOBAL表示MPP环境下建立的会话为全局会话,对数据库的操作在所有节点进行;LOCAL表示MPP环境下建立的会话为本地会话,对数据库的操作只在本地节点进行。 <server&gt 指定服务器的IP地址或是在dm_svc.conf中配置的网络服务名。dm_svc.conf的配置请参考《DM7系统管理员手册》的2.1.1节。例如:在dm_svc.conf中配置服务名dmrac_svc =(192.168.0.38:5236, 192.168.0.38:5237)。然后就可以使用服务名登录了: DIsql SYSDBA/SYSDBA@dmrac_svc使用服务名的好处是第一个IP连不通,会自动连接下一个。 UDP|TCP 指定使用UDP协议或TCP协议。缺省为TCP。例如:DIsql SYSDBA/SYSDBA@localhost:5236?UDP [#<sslpath&gt@ssl_pwd] 通信加密中客户端证书存放的地址和客户端证书密钥。各用户只能使用自己的证书,例如SYSDBA账户只能使用\bin\CLIENT_SSL\SYSDBA下的证书和密码,如果证书没有密码可以用缺省或任意数字代替。例如:DIsql SYSDBA/SYSDBA@192.168.0.38:5236#D:\dmdbms\bin\client_ssl\SYSDBA@12345 缺省为不加密。 /NOLOG 表示启动DIsql 而不登录到服务器。此时可以进行DIsql的显示设置和本地变量操作。如果没有/NOLOG选项必须登录服务器,不带参数的时候提示输入用户名和密码,此时的用户名和密码用法参考<logon&gt。且登录三次失败后退出DIsql。 <start&gt 运行DIsql脚本文件。 例如,假设a.sql是路径为“c:\”的任意脚本文件:DIsql -S SYSDBA/SYSDBA@192.168.0.80:5236 c:\a.sql。如果在linux环境下使用,<start&gt外需要加上单引号,如:’" < file_path &gt"'。 <file_path&gt 运行DIsql脚本文件的绝对路径。 <PARAMETER_VALUE&gt 传给<file_path&gt脚本文件中本地变量的参数值,将其中的参数内容传给变了&1,&2,&3…以此类推。 <直接执行语句&gt 使用-E参数,将在运行DIsql时直接执行后续的一条或多条SQL语句。例如:DIsql SYSDBA/SYSDBA -e "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"。 <password&gt中特殊字符的处理方法,不同操作系统,处理方法不同。 1.不同操作系统 WINDOWS系统 DIsql的关键字符,DIsql的要求对连接串的特殊字符需要使用双引号括起来”aaaa/aaaa”, 操作系统的要求需要再在最外加双引号和转义”””aaaa/aaaa”””。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:DIsql user01/”””aaaa/aaaa””” 空格,需要使用双引号括起来作为一个整体(这是操作系统的要求)。例如:用户名为user01,密码为aaaa aaaa ,那么连接串要写成:DIsql user01/”aaaa aaaa”双引号,DIsql要求对双引号需要使用双引号括起来,同时双引号需要转义”aaaa””aaaa”;操作系统要求再对双引号转义和最外层加双引号”””aaaa””””aaaa”””。例如:用户名为user01,密码为aaaa”aaaa ,那么连接串要写成:DIsql user01/”””aaaa””””aaaa”””。 LINUX系统 LINUX环境下,密码中的特殊字符处理过程既要考虑操作系统的要求,又要考虑DIsql的要求。首先,操作系统的要求。 bash的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;在双引号中,特殊字符包括:美元符($)、反引号()、转义符()、感叹号(!)。如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引
号括起来;如果既有单引号又有美元符()、反引号(`)、转义符(\)、感叹号(!)四个特殊字符,那么在特殊字符之前全部加\转义就好了。 例如: 'aaaa\aaaa' 传给disql为aaaa\aaaa。 "aaaa'aaaa" 传给disql为aaaa'aaaa。 "aaa'\$aaaa" 传给disql为aaa'aaaa。
其次,在操作系统要求的基础上,增加DIsql对关键字和双引号的要求。
DIsql的关键字符,DIsql的要求对连接串的特殊字符需要使用双引号括起来。例如:密码为aaaa\aaaa,使用双引号括起来“aaaa\aaaa”,因为此密码中不含有单引号,根据操作系统的要求直接在最外面加单引号。例如:用户名为user01,密码为aaaa/aaaa,那么连接串要写成:./DIsql user01/’”aaaa/aaaa”’。
双引号,DIsql要求对双引号需要使用双引号括起来,同时双引号需要转义。例如:密码为aaa”\aaaa,那么根据DIsql的要求加双引号同时转义为”aaa””\aaaa”,因为没有单引号,根据操作系统的要求直接加单引号。例如:用户名为user01,密码为aaa”\aaaa,那么连接串要写成:./DIsql user01/’”aaa””\aaaa”’。
单引号,根据操作系统的要求,只能将单引号放入双引号中。例如:用户名为user01,密码为aaaa’aaaa,那么连接串要写成:./DIsql user01/”aaaa’aaaa”。
单引号+操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。例如: 用户名为user01,密码为aaa’aaaa,使用双引号括起来,同时对加反斜杠转义。那么连接串要写成:./DIsql user01/”aaa’$aaaa”。
单引号+双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号。例如: 用户名为user01,密码为aaa”'aaaa,根据DIsql的要求双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义”aaa””'aaaa”;同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双引号中,同时对双引号使用反斜杠转义,那么连接串要写成:./DIsql user01/”\”aaa\”\”'aaaa\””。
2.如何转义双引号

  1. DIsql的要求使用双引号对双引号内的双引号转义。
  2. WINDOWS命令行,使用双引号或者反斜杠对双引号内的双引号转义。
  3. LINUX命令行,使用反斜杠对双引号内的双引号转义。
    <start&gt命令中:<`运行脚本&gt既可以在DIsql启动时使用,也可以在进入DIsql界面之后使用。而<start运行脚本&gt只能在进入DIsql界面之后才能使用。
    2切换登录
    用户进入DIsql界面后,如果想切换到其他DM数据库实例。有两种实现方式:一是使用LOGIN命令;二是使用CONN命令。登录到远程数据库,必须在服务名处使用IP地址或网络服务名。
    2.1 LOGIN /LOGOUT
  1. LOGIN登录主库建立会话
    disql V7.1.6.48-Build(2018.03.01-89507)ENT
    SQL&gt login
    服务名:10.138.130.190
    用户名:sysdba
    密码:
    端口号:5236
    SSL路径:
    SSL密码:
    UKEY名称:
    UKEY PIN码:
    MPP类型:
    是否读写分离(y/n):n
    协议类型:
    服务器[10.138.130.190:5236]:处于普通打开状态
    登录使用时间 :26.018(ms)
    服务名:数据库服务名或IP地址。LOCALHOST表示本地服务器。默认为LOCALHOST。
    用户名和密码:默认均为SYSDBA,密码不回显。
    端口号:默认为5236。
    SSL路径和SSL密码:用于服务器通信加密,不加密的用户不用设置,缺省为不设置。
    UKEY名称和UKEY PIN码:供使用UKEY的用户使用,普通用户不用设置,缺省为不使用。
    MPP 类型:参见上一节<MPP_TYPE&gt,MPP类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值
    为GLOBAL和LOCAL,默认为GLOBAL。
    是否读写分离(y/n):默认n。如果输入y,会提示:读写分离百分比(0-100)。用户根据需要输入相应的百分比,如果
    输入的百分比不合法,那就相当于没有设置。
    登录成功后会显示登录时间。

  2. LOGOUT从登录主库注销会话
    LOGOUT命令从登录主库注销会话。断开连接而不退出DIsql

SQL&gt logout
2.2 CONN[ECT] /DISCONN[ECT]

  1. CONN[ECT] 连接
    CONN[ECT]命令与login命令相似,增加的功能是,可以在命令之后直接跟<username&gt[/<password&gt][*<MPP_TYPE&gt]

[@<server&gt],或者跟<username&gt,然后按照DIsql提示输入<password&gt来连接。
语法如下:

CONN[ECT] <username&gt[/<password&gt][*<MPP_TYPE&gt] [@<server&gt]
或者
CONN[ECT] <username&gt

<password&gt:密码。如果密码中有特殊字符,需要特别处理。特殊字符指密码串中含有的关键字符(/@:#*[]) 或双引号"。具体处理如下:

关键字符,需要用双引号括起连接串中的密码串。例如:用户名user01,密码为aaaa/aaaa,那么连接串要写成:

conn user01/“aaaa/aaaa”。
双引号,需要用双引号括起连接串中的密码串,同时双引号还需要用双引号"或反斜杠/转义。例如:用户名user01,密码为aaaa"aaaa ,那么连接串要写成conn user01/“aaaa”“aaaa”。

使用CONN[ECT]命令建立新会话时,会自动断开先前会话。

SQL&gt conn sysdba/xxzx7817600@10.18.30.190:5236
Server[10.18.30.190:5236]:mode is normal, state is open
login used time: 10.735(ms)
2. DISCONN[ECT] 断开连接
DISCONN[ECT]:断开连接而不退出DIsql。与logout功能一样。

SQL&gt disconnect
not connected
3使用DIsql
以一个简单的查询例子来说明如何使用DIsql。只需要输入一条SQL语句,回车即可。DIsql将SQL语句发送给DM数据库服务器并显示服务器返回的结果。SQL语句如何书写请参考《DM7_SQL语言使用手册》。

SQL&gt select top 5 name,id from sysobjects;
LINEID NAME ID


1 SYSOBJECTS 0
2 SYSINDEXES 1
3 SYSCOLUMNS 2
4 SYSUSER$ 3
5 SYSCONS 4
used time: 2.961(ms). Execute id is 2096.
4退出DIsql
使用EXIT/QUIT命令,退出DIsql。
语法如下:
EXIT|QUIT

SQL&gt exit
[dmdba@cs1 bin]$
DIsql与SQL*Plus有很多类似,对于有Oracle学习经验的从业者来说还是很容易上手的。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论