Linux平臺達夢數據庫V7之disql工具使用詳解

一 前言

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>

  1. 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
    SET

    Sets 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 value

      where 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 DIR

      5.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]:5236 c:\a.sql。<br/>如果在 linux 環境下使用,&lt;start&gt;外需要加上單引號,如:'" <file_path >"'。
      注意:
      <start> 命令 中:<` 運行腳本>在 既可以在 DIsql 啓動時使用,也可以在進入 入 DIsql 界面之後使用。而<start 運行腳本>入 只能在進入 DIsql 界面之後才能使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章