DIsql 是 DM 数据库的一个命令行客户端工具,用来与 DM 数据库服务器进行交互。
DIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在应用菜单和安装目录中
找到。
为了使用 DIsql,必须首先要启动 DIsql。DIsql 工具可以广泛用于各种操作系统,
如 WINDOWS、LINUX 等。
启动之后,当出现“SQL>”符号时,用户就可以利用 DM 提供的 SQL 语句和数据库进行
交互操作了,需要注意的是,在 DIsql 中 SQL 语句应以分号“;”结束。对于执行语句块,
创建触发器,存储过程,函数,包,模式等时需要用“/”结束。
DIsql 的登录方式。
语法如下:
DISQL 用法 1:disql –h|help 显示 disql 版本信息和帮助信息
DISQL 用法 2:disql [ [<option>] [<logon> |{/NOLOG}] [<start>] ]
<option>::=[-L] [-S]
<logon>::={{<username>[/<password>]} | /}[@<connect_identifier>][<option>]
[<os_auth>]
<connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
<option>::= #{ <extend_option>=<value>{,<extend_option>=<value>} } --此行外层{}
是为了封装参数之用,书写时需要保留
<os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
<start>::=<`运行脚本>|<start 运行脚本>|<直接执行语句>|<直接执行 SET 命令>
<`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
4DM8_DIsql 使用手册
5
<start 运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<直接执行语句>::= -E “<SQL 语句>{;<SQL 语句>}”
<直接执行设置 DIsql 属性命令>::=-C “<SET 命令 | COLUMN 命令>
-h|help:h 或 help 表示显示 DIsql 版本信息和帮助信息。
[-L] [-S]:-L 表示只尝试登录一次;-S 表示设置 DIsql 界面为隐藏模式,隐藏
<SQL>标识符。
{{<username>[/<password>]} | /}:<username>[/<password>]为用户名
和密码。普通登录方式时用户名必写,密码缺省为 SYSDBA。/表示采用操作系统身份验证
方式登录或利用 wallet 文件登录。采用操作系统身份验证方式登录时无需指定用户名和
密码,即使指定也会被忽略。利用 wallet 文件登录时,dm_svc.conf 文件中的配置项
WALLET_LOCATION 必须非空,客户端会通过用户输入的服务名以及 WALLET_LOCATION
配置项指定的 wallet 文件路径自动获取 wallet 文件中服务名所对应的用户名和密码,
因此用户无需输入用户名和密码,若用户输入了用户名和密码,则优先使用用户输入的用户
名和密码登录数据库,关于利用 wallet 文件登录数据库的更多详细介绍请参考手册《DM8
安全管理》。如果<password>中含有特殊字符,因为特殊字符在操作系统中需要被特殊
处理,因此特殊字符书写的时候需要按照要求的格式。本节末尾会针对包含特殊字符的
<password>如何书写,进行详细介绍。
<svc_name>:服务名。服务名在 dm_svc.conf 中配置。dm_svc.conf 的配置请
参考《DM8 系统管理员手册》。例如:在 dm_svc.conf 中配置服务名
dmsvc =(192.168.1.150:5236, 192.168.1.150:5237)。然后就可以使用服务名
登录了:DIsql SYSDBA/SYSDBA@dmsvc。使用服务名的好处是第一个 IP 连不通,会自
动连接下一个。
<host>[:<port>]:服务器 IP 地址和端口号。缺省情况下默认为本地服务器和端
口号 LOCALHOST:5236。当服务器为本机时,SERVER:PORT 可直接写 LOCALHOST。当
连接其他服务器时,SERVER:PORT 需写上 IP 地址和 PORTNUM,例如:DM8_DIsql 使用手册
6
192.168.0.248:8888。<host>如果是 IPv6 的地址,需要用[]指明是 IPv6 地址,例
如[fe80::1e6f:65ff:fed1:3724%6]。
<unixsocket_file>:专门用于在 LINUX 系统中,当服务器与客户端之间使用
UNIXSOCETUNIX-IPC 方式通信时,指定客户端连接的 UNIXSOCKET 路径文件名。必须
和 inet_type=UNIXSOCKET 同时使用。例如:
./disql SYSDBA/SYSDBA@/data/sdb/DAMENG/foo.sock#{inet_type=UNIXSOCKET}
<option>:为扩展选项,用法为<exetend_option>=<value>。所有 value 值不
能包含空格,不能包含特殊的符号,如引号等。书写扩展选项时需要用引号#"{ }"进行封
装,例如:#"{inet_type=tcp,mpp_type=local}"。
现支持的扩展选项如下:
extend_option
value
mpp_type
MPP 登录属性,此属性的设置对非
MPP 系统没有影响。取值 GLOBAL 和 LOCAL,默
认为 GLOBAL。GLOBAL 表示 MPP 环境下建立的会话为全局会话,对数据库的导入导
出操作在所有节点进行;LOCAL 表示 MPP 环境下建立的会话为本地会话,对数据库
的导入导出操作只在本地节点进行
inet_type
网络通信协议类型。取值 UDP/TCP/IPC/RDMA/UNIXSOCKET,分别对应 UDP 协
议、TCP 协议、IPC(共享内存)、RDMA(远程直接内存访问)、
UNIXSOCKET(unix domain socket - IPC)协议。缺省为 TCP
ssl_path
通信加密的 SSL 数字证书路径,缺省为不使用加密。数字证书路径由用户自己创建,
将相应的证书需放入该文件夹中。其中服务器证书必须与 dmserver 目录同级,客
户端目录可以任意设置。和 ssl_pwd 一起使用。
各用户只能使用自己的 SSL 数字证书,例如 SYSDBA 账户只能使用
\bin\CLIENT_SSL\SYSDBA 下的证书和密码,如果证书没有密码可以用缺省或任
意数字代替。
例如:
./DIsql SYSDBA/SYSDBA@192.168.1.64:5236#"{ssl_path=
/home/dmdbms/bin/client_ssl/SYSDBA,ssl_pwd=12345}"
ssl_pwd
通信加密的 SSL
数字证书密码。和 ssl_path 一起使用。缺省为不加密
proxy_client
被代理的用户名。
例如:被代理用户 USER1 的口令和密码为 USER111/ USER111。代理用户 USER2
的用户名和密码为 SYSDBA/SYSDBA。
首先,赋予用户 USER2 代理用户 USER1 权限,使用户 USER2 可以认证登录用户
USER1。
SQL>ALTER USER USER1 GRANT CONNECT THROUGH USER2;DM8_DIsql 使用手册
7
然后,使用代理用户 USER2 就能登录被代理用户 USER1 的数据库。
./disql
SYSDBA/SYSDBA@192.168.1.64:5236#"{inet_type=tcp,proxy_client=U
SER1}