一 前言
disql是DM 數據庫的一個命令行客戶端工具,用來與DM數據庫服務器進行交互。disql是DM數據庫自帶的工具,只要安裝了DM數據庫,就可以在應用菜單和安裝目錄中找到。其功能類似於oracle的sqlplus。
當然,如果對命令不熟悉的,也可以通過圖形界面的DM管理工具進行操作。
二 disql入門
2.1 啓動disql
爲了使用 DIsql,必須首先要啓動 DIsql。DIsql 工具可以廣泛用於各種操作系統,如 WINDOWS、LINUX 等。
啓動之後,當出現“SQL>”符號時,用戶就可以利用 DM 提供的 SQL 語句和數據庫進行交互操作了,需要注意的是,在 DIsql 中 SQL 語句應以分號“;”結束。對於執行語句塊,創建觸發器,存儲過程,函數,包,模式等時需要用“/”結束。
Disql的啓動有兩種方式:
1.winodws平臺
1)通過開始菜單中的SQL交互式查詢工具啓動;
2)通過$DM_HOME\bin\disql.exe啓動(需要配置環境變量PATH)。
2.linux平臺
1)通過桌面快捷方式中SQL交互式查詢工具啓動;
2)通過$DM_HOME/bin/disql啓動(需要配置環境變量PATH)。
[dmdba@dm3 IESDB]$ disql sysdba/SYSDBA
服務器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間: 50.277(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>
2.2 切換登錄
用戶進入 DIsql 界面後,如果想切換到其他 DM 數據庫實例。有兩種實現方式:一是使用 LOGIN 命令;二是使用 CONN 命令。登錄到遠程數據庫,必須在服務名處使用 IP 地址或網絡服務名。
2.2.1 LOGIN /LOGOUT
1.LOGIN登錄主庫建立會話
直接輸入 LOGIN 命令後,屏幕會提示輸入登錄信息:
SQL> login
服務名:
用戶名:
密碼:
端口號:
SSL路徑:
SSL密碼:
MPP類型:
是否讀寫分離(y/n):
協議類型:
參數說明
服務名:數據庫服務名或 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)。用戶根據需要輸入相應的百分比,如果輸入的百分比不合法,那就相當於沒有設置。
登錄成功後會顯示登錄時間。
SQL> login
服務名:
用戶名:
密碼:
端口號:
SSL路徑:
SSL密碼:
MPP類型:
是否讀寫分離(y/n):
協議類型:
服務器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間 :7.629(ms)
SQL>
-
LOGOUT從登錄主庫註銷會話
LOGOUT 命令從登錄主庫註銷會話。斷開連接而不退出 DIsql。
SQL> logout三 disql連接數據庫的方式
DIsql 是 DM 數據庫自帶的一個命令行客戶端工具,用來與 DM 數據庫服務器進行交互。
工具語法如下:
[dmdba@dm3 IESDB]$ disql -h
disql V7.6.0.171-Build(2019.07.02-109059)ENT
DISQL 用法1:disql -h|help 顯示disql版本信息和幫助信息
DISQL 用法2:disql [ [<option>] [{<logon> | /NOLOG}] [<start>] ]
<option> 爲: [-L] [-S]
-L 只嘗試登錄一次
-S 隱藏模式,隱藏<SQL>標識符
<logon> 爲: {<username>[/<password>][*<MPP_TYPE>][@<connect_identifier>]} | {/ AS <SYSDBA|SYSSSO|SYSAUDITOR|AUTO>}br/><connect_identifier>爲{[<server>][:<port>][?{UDP|TCP|IPC|RDMA}][#<sslpath>][@<sslpwd>]}
<server>如果是IPv6的地址,需要用[]指明是IPv6地址,例如[fe80::1e6f:65ff:fed1:3724%6]
<start> : `<filename>[<parameter> ...]<direct sql> 運行disql腳本
/NOLOG 選項能在未登錄DM服務器的情況下啓動disql
<direct sql>:-e "<SQL語句>[;<SQL語句>]"
關於這些選項的詳細解釋可以參考DM的官方手冊《DM7_disql使用手冊》2.1.2.2DIsql 登錄方式.3.1 服務端本地連接
在安裝達夢服務端本地,可以直接通過disql進行登錄,而無須指定IP與端口號(默認爲LOCALHOST:5236):
[dmdba@dm3 /]$ disql sysdba/SYSDBA
服務器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間: 8.525(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>3.2 指定IP與端口號連接
這種方式類似於oracle數據庫的EZCONNECT方式,可以連接任意服務端:
[dmdba@dm3 /]$ disql sysdba/[email protected]:5236
服務器[192.128.1.3:5236]:處於普通打開狀態
登錄使用時間: 19.260(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>3.3 網絡服務名連接
網絡服務名的詳細信息參考官方文檔,本節所指的配置文件爲dm_svc.conf,該文件在 Windows 操作平臺下此文件位於%SystemRoot%\system32 目錄,在 Linux 平臺下此文件位於/etc 目錄。
官方文檔中給出的該文件的配置信息如下:以#開頭的行表示是註釋
全局配置區
O2000=(192.168.0.1:5000,192.168.0.2:5236)
O3000=(192.168.0.1:5236,192.168.0.3:4350)
TIME_ZONE=(+8:00)
LOGIN_ENCRYPT=(0)
DIRECT=(Y)服務配置區
[O2000]
TIME_ZONE=(+9:00)
LOGIN_MODE=(2)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(10)
需要說明的是,如果對 dm_svc.conf 的配置項進行了修改,需要重啓客戶端程序,修
改的配置才能生效。
測試如下:
[dmdba@dm3 /]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
semiter=(192.128.1.3:5236)
[dmdba@dm3 /]$ disql sysdba/SYSDBA@semiter
服務器[192.128.1.3:5236]:處於普通打開狀態
登錄使用時間: 5.597(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>
這裏需要說明幾點:
1.網絡服務名不區分大小寫;
[dmdba@dm3 /]$ disql sysdba/SYSDBA@semiter
服務器[192.128.1.3:5236]:處於普通打開狀態
登錄使用時間: 5.597(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL> exit
[dmdba@dm3 /]$ disql sysdba/SYSDBA@SEMITER
服務器[192.128.1.3:5236]:處於普通打開狀態
登錄使用時間: 4.616(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>
2.網絡服務名後面可以跟端口號
這一點在非默認端口的情況下需要特別注意,另外對於達夢6的早期版本,不支持指定端口號,也就意味着不支持修改默認端口號。
3 LANGUAGE參數
當前數據庫服務器使用的語言,會影響幫助信息錯誤和提示信息。支持的選項爲:CN(表示中文)和 EN(表示英文)。可以不指定,若不指定,系統會讀取操作系統信息獲得語言信息,建議有需要才指定。
我們之前所執行的查詢操作,在disql環境下都是中文顯示,這是因爲dm_svc.conf文件中LANGUAGE=CN,我們修改爲EN測試一下:
[dmdba@dm3 /]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(en)
semiter=(192.128.1.3:5236)
[dmdba@dm3 /]$ disql sysdba/SYSDBA@SEMITER
Server[192.128.1.3:5236]:mode is normal, state is open
login used time: 4.114(ms)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL>四 disql中的環境變量設置
使用 SET 命令可以對當前 DIsql 的環境變量進行設置。並通過 SHOW 命令來查看當前系統中環境變量的設置情況。
4.1 set命令用法
SET 命令用於設置 DIsql 系統環境變量。
語法如下:
SET <system_variable><value>{ <system_variable><value>}
<system_variable>:變量名稱,參考官方文檔。
<value>:屬性。
可以同時 SET 多個環境變量,如:Set heading on timing on。一旦 SET 之後某個環境變量出錯,那麼該變量之後的將不再起作用。
SQL> help set
SETSets a system variable to alter the DISQL environment settings
for your current session. For example, to:- set the display width for data
- customize HTML formatting
- enable or disable printing of column headings
-
set the number of lines per page
SET system_variable valuewhere system_variable and value represent one of the following clauses:
NEWP[AGE] {1|n|NONE}
AUTOCOMMIT {OFF|ON}
PAGES[IZE] {14|n}
DEFINE {&|c|ON|OFF}
ECHO {OFF|ON}
FEED[BACK] {6|n|ON|OFF}
HEA[DING] {ON|OFF}
TIMING {OFF|ON}
TIME {OFF|ON}
VER[IFY] {ON|OFF}
LONG {800|n}
LINESIZE {screen_length|n}
SERVEROUT[PUT] {ON | OFF} [SIZE {n}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]
SCREENBUFSIZE {DEFAULT | n(byte)}
CHAR_CODE {GBK | UTF8 | DEFAULT}
CURSOR {STATIC | FORWARDONLY | DEFAULT}
LINESHOW {ON | OFF}
AUTOTRACE {OFF | NL | INDEX | ON | TRACE}
DESCRIBE [DEPTH {1|n|ALL}] [LINENUM {ON|OFF}] [INDENT {ON|OFF}]
TRIMS[POOL] {ON | OFF}
AUTORECONN {ON | OFF}
LOBCOMPLETE {ON | OFF}
KEEPDATA {ON | OFF}
NEST_COMMENT {ON | OFF}
NULL_ASNULL {ON | OFF}
NULL_SHOW {ON | OFF}
CMD_EXEC {ON | OFF}
COLSEP {| text}
CHARDEL {| text}
FLOAT_SHOW { float_length }4.2 show命令用法
通過使用 SHOW 命令,用戶就可以快速而方便的瞭解到 DIsql 環境的當前環境變量設置。
SHOW 可以顯示一個或多個變量。顯示多個變量時中間加空格,當其中某一變量出錯之後,後面的仍會繼續顯示。
語法如下:
SHOW <system_variable>{<system_variable>}
<system_variable>:環境變量。
示例如下,顯示 HEADING 和 TIMING 兩個變量:
SQL> SHOW HEADING TIMING
HEADING ON.
TIMING ON五 disql下常用命令
5.1 help
DIsql 幫助命令,可以幫助用戶查看其他命令的具體用法。用戶可以看到其他命令系統顯示的內容,概括爲:
命令的標題
命令的文本描述
命令的簡寫(例如,AUTO 可以代替 AUTOCOMMIT)
可以向命令傳遞的強制參數和可選參數
HELP 顯示指定命令的幫助信息。
語法如下:
HELP|? [topic]
topic:命令名稱或者命令名稱的首字母,查詢某一命令用法或者某一字母開頭的所有命令用法。
示例如下 :
SQL> HELP DEFINE
DEFINE設置變量值,或者顯示已定義的變量信息。
DEF[INE] [variable] | [variable = text]5.2 spool
將屏幕顯示的內容輸出到指定文件。
語法如下:
SPOOL {<file> | OFF }
<file>::= <file_path> [CRE[ATE]|REP[LACE]|APP[END]]
<file_path>:指定文件的絕對路徑
CRE[ATE]:創建指定的文件,若指定的文件已存在,則報錯,默認方式
REP[LACE]:創建指定的文件,若指定的文件已存在,則替換它
APP[END]]:將輸出內容追加到指定文件的末尾
OFF:關閉 SPOOL 輸出
示例如下:
SQL>spoold:\b.sqlCREATE
SQL>select top 5* from sysobjects;
SQL>spool off
先執行上述語句,然後,查看 d:\b.sql 文件。
注意:只有 SPOOL OFF 之後 ,才 能 在輸出文件中看到輸出的內容。5.3 host
使用 HOST 命令可以不用退出 DIsql 就能執行操作系統命令。如果單獨執行 host,則能夠直接從 DIsql 界面切換到操作系統,之後可使用 EXIT 回到 DIsql 界面。
語法如下:
HOST[<command>]
<command>:操作系統命令。
示例如下:
SQL>HOST DIR5.4 DESCRIBE
獲取表或視圖、存儲過程、函數、包、記錄、類的結構描述。
語法如下:
DESC[RIBE] <table>|<view>|<proc>|<fun>|<pkg>|<record>|<class> ;
各對象獲取的內容略有不同:
表或視圖獲取的內容包括列名,列數據類型,列是否可以取空值。
函數、過程、類獲取的內容包括兩類:1)存儲函數/過程名,類型(函數或過程),函數返回值類型;2)參數名,參數數據類型、參數輸入輸出屬性、參數缺省值。
包獲取的內容分爲兩類:1)包內存儲函數/過程名,類型(函數或過程),函數返回值類型;2)包內參數名,參數數據類型、參數輸入輸出屬性、參數缺省值。
記錄獲取的內容爲:參數名,參數數據類型,參數是否可以取空值。5.5 explain
用 EXPLAIN 命令來查看查詢語句的執行計劃。
語法如下:
EXPLAIN <sql_clause>
<sql_clause>請參考《DM7_SQL 語言使用手冊》。
示例如下:
SQL>EXPLAIN select count(*) from sysobjects;5.6 more
當結果集過多,屏幕只能顯示一個時,用戶可以使用 MORE 命令切換到下一個結果集。
MORE
例如,當執行如下語句時,用戶想查看更多的結果集,可以使用 MORE 命令。
begin
select top 10 from v$dm_ini;
select top 10 from sysobjects;
select * from dual;
end
/5.7 顯示SQL語句或塊信息LIST
顯示最近執行的 SQL 語句或者 PL/SQL 塊信息。不顯示 DIsql 命令。
LIST 或者 ;五 disql下執行SQL腳本
在第三章開頭已經介紹了disql連接數據庫的語法,其中有一個參數start,即可以執行sql腳本:
運行 DIsql 腳本文件。
例如,假設a.sql是路徑爲“c:\”的任意腳本文件DIsql –S SYSDBA/[email protected]:5236c:\a.sql。<br/>如果在 linux 環境下使用,<start>外需要加上單引號,如:'
" <file_path >"'。
注意:
<start> 命令 中:<` 運行腳本>在 既可以在 DIsql 啓動時使用,也可以在進入 入 DIsql 界面之後使用。而<start 運行腳本>入 只能在進入 DIsql 界面之後才能使用。