達夢DIsql

eric0435發表於2018-07-25

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學習經驗的從業者來說還是很容易上手的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2158733/,如需轉載,請註明出處,否則將追究法律責任。

相關文章