DIsql工具是一款类似于SQL*Plus的工具,这里介绍如何启动DIsql并成功登录到数据库、如何远程登录到其他数据库、如何使用以及如何退出DIsql。
启动DIsql
为了使用DIsql,必须首先要启动DIsql。DIsql工具可以广泛用于各种操作系统,如WINDOWS、LINUX等。启动之后,当出现“SQL>”符号时,用户就可以利用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> 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>
也可以全部直接回车,采用缺省输入,登录到本地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>
如果后续操作想登录到其他DM数据库实例,可使用LOGIN或CONN命令。
SQL> 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>E: E:\>cd dmdbms\bin E:\dmdbms\bin>disql 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>
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>
1.2.2 DIsql登录方式
DIsql的登录方式。
语法如下:
DIsql [ [<option>] [<logon> | /NOLOG] [<start>] ] <option>::=HELP|-H|-S <logon>::=<username>[/<password>][*<MPP_TYPE>][@<server>][:<port>][?{UDP|TCP}] [#<sslpath>@ssl_pwd] <start>::=<`运行脚本>|<start运行脚本>|<直接执行语句> <`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}] <start运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}] <直接执行语句>::= -E “<SQL语句>{;<SQL语句>}” 文中语法符号规定:<>内的内容是必选项; []内的内容是可选项;{}内的内容可以出现一次或多次 |为或者;::=为定义符。后文语法用法与此相同。
DIsql登录方式参数介绍
HELP|-H|-S
HELP或-H表示显示DIsql版本信息和帮助信息;-S表示设置DIsql界面为隐藏模式,隐藏命令的<SQL>标识符。
[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>] [{logon | /nolog}] [<start>] ] <option>:-S set no show model, hidden disql flag <logon> : {<username>[/<password>][*<MPP_TYPE>][@<connect_identifier>] | /} [AS <SYSDBA|SYSSSO| SYSAUDITOR|AUTO>] <connect_identifier> :{[<SERVER>][:<PORT>][?{UDP|TCP|IPC|RDMA}][#<sslpath>][@<sslpwd>]} if ipv6 address,[] is needed. For example [fe80::1e6f:65ff:fed1:3724%6] <start> : `<filename>[<parameter> ...] run disql bash /NOLOG option can run disql, while not connected to DM server
<username> 指定数据库的用户名。缺省用户名为SYSDBA。 <password> 指定数据库的密码。缺省密码为SYSDBA。输入密码时,如遇到特殊字符需要特别处理。特殊字符包括关键字符和双引号等。特殊字符的处理见下文。 <MPP_TYPE> 指MPP类型。MPP 类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值为GLOBAL和LOCAL,默认为GLOBAL。GLOBAL表示MPP环境下建立的会话为全局会话,对数据库的操作在所有节点进行;LOCAL表示MPP环境下建立的会话为本地会话,对数据库的操作只在本地节点进行。 <server> 指定服务器的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>@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>。且登录三次失败后退出DIsql。 <start> 运行DIsql脚本文件。 例如,假设a.sql是路径为“c:\”的任意脚本文件:DIsql -S SYSDBA/SYSDBA@192.168.0.80:5236 `c:\a.sql。如果在linux环境下使用,<start>外需要加上单引号,如:'`" < file_path >"'。 <file_path> 运行DIsql脚本文件的绝对路径。 <PARAMETER_VALUE> 传给<file_path>脚本文件中本地变量的参数值,将其中的参数内容传给变了&1,&2,&3…以此类推。 <直接执行语句> 使用-E参数,将在运行DIsql时直接执行后续的一条或多条SQL语句。例如:DIsql SYSDBA/SYSDBA -e "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"。 <password>中特殊字符的处理方法,不同操作系统,处理方法不同。 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>命令中:<`运行脚本>既可以在DIsql启动时使用,也可以在进入DIsql界面之后使用。而<start运行脚本>只能在进入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> 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>,MPP类型是MPP登录属性,此属性的设置对非MPP系统没有影响。此属性的有效值
为GLOBAL和LOCAL,默认为GLOBAL。
是否读写分离(y/n):默认n。如果输入y,会提示:读写分离百分比(0-100)。用户根据需要输入相应的百分比,如果
输入的百分比不合法,那就相当于没有设置。
登录成功后会显示登录时间。
2. LOGOUT从登录主库注销会话
LOGOUT命令从登录主库注销会话。断开连接而不退出DIsql
SQL> logout
2.2 CONN[ECT] /DISCONN[ECT]
1. CONN[ECT] 连接
CONN[ECT]命令与login命令相似,增加的功能是,可以在命令之后直接跟<username>[/<password>][*<MPP_TYPE>]
[@<server>],或者跟<username>,然后按照DIsql提示输入<password>来连接。
语法如下:
CONN[ECT] <username>[/<password>][*<MPP_TYPE>] [@<server>]
或者
CONN[ECT] <username>
<password>:密码。如果密码中有特殊字符,需要特别处理。特殊字符指密码串中含有的关键字符(/@:#*[]) 或双引号”。具体处理如下:
关键字符,需要用双引号括起连接串中的密码串。例如:用户名user01,密码为aaaa/aaaa,那么连接串要写成:
conn user01/"aaaa/aaaa"。
双引号,需要用双引号括起连接串中的密码串,同时双引号还需要用双引号”或反斜杠/转义。例如:用户名user01,密码为aaaa”aaaa ,那么连接串要写成conn user01/”aaaa””aaaa”。
使用CONN[ECT]命令建立新会话时,会自动断开先前会话。
SQL> 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> disconnect not connected
3使用DIsql
以一个简单的查询例子来说明如何使用DIsql。只需要输入一条SQL语句,回车即可。DIsql将SQL语句发送给DM数据库服务器并显示服务器返回的结果。SQL语句如何书写请参考《DM7_SQL语言使用手册》。
SQL> 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> exit [dmdba@cs1 bin]$
DIsql与SQL*Plus有很多类似,对于有Oracle学习经验的从业者来说还是很容易上手的。