文章詳情頁
定制DB2通用數(shù)據(jù)庫命令行處理器
瀏覽:2日期:2023-11-10 12:07:58
引言IBM® DB2® Universal Database™ Linux、UNIX® 和 Windows® 版(下稱 DB2 UDB)提供了兩種從命令行界面輸入命令的方式。當(dāng)以交互(Interactive)模式使用 DB2 UDB 命令行處理器(DB2 UDB Command Line Processor,DB2 UDB CLP)時,您不必在 DB2 UDB 命令或 SQL 查詢前加上要害字 db2 。假如您不熟悉 DB2 UDB CLP 不同的運(yùn)行模式,那么請查看 DB2 規(guī)劃 - DB2 V8.1 Family Fundamentals 認(rèn)證預(yù)備教程,第 1 部分(共 6 部分)。請看一下 圖 1,圖中在運(yùn)行于交互模式下的 DB2 UDB CLP 中輸入了 SELECT *... 語句。您知道這個特定表(STAFF)位于哪個數(shù)據(jù)庫或?qū)嵗龁幔磕蟾挪恢腊桑m然對于這個特例,您可以猜測);可是,DB2 UDB 知道!圖 1. 缺省的 CLP 視圖不會告訴您連接到了哪個實(shí)例
現(xiàn)在看一眼下面 圖 2中一模一樣的查詢。您現(xiàn)在能回答我的問題了嗎?注重到有什么不同了嗎?圖 2. 對 CLP 進(jìn)行了定制,以向您顯示您所連接的實(shí)例和數(shù)據(jù)庫帶修訂包 1(Fix Pack 1,F(xiàn)P1)的 DB2 UDB V8.1 提供了很棒的新功能,這項(xiàng)功能可以讓您在運(yùn)行于交互模式時,定制 DB2 UDB CLP 提示符(后文所指的 DB2 UDB CLP 就是運(yùn)行于交互模式的 DB2 UDB CLP)。您可以使用這項(xiàng)新的定制功能,把您自己的文本和反映當(dāng)前實(shí)例連接(instance attachment)和/或數(shù)據(jù)庫連接(database connection)的上下文(context)的變量添加到輸出顯示。本文將向您介紹這項(xiàng)新的定制功能。定制交互模式下的 DB2 UDB CLP帶 FP1 的 DB2 V8.1 新增了可定制的 DB2 UDB CLP 交互提示符功能。現(xiàn)在 DB2 UDB CLP 提示符可以反映當(dāng)前實(shí)例連接和數(shù)據(jù)庫連接的上下文,還可以顯示特定的字符消息。假如沒有該項(xiàng)功能,使用交互模式下的 DB2 CLP 會顯示硬編碼的提示符,如 圖 3所示。圖 3. CLP 中的硬編碼提示符在繼續(xù)下去之前:關(guān)于 DB2 UDB 注冊表變量的 20 秒課程您可以使用 DB2 UDB 注冊表變量更改環(huán)境。這些變量之所以可以被這樣設(shè)置,是因?yàn)樗鼈儽举|(zhì)上是動態(tài)的,并且可適用于當(dāng)前運(yùn)行時環(huán)境,而無需包含在系統(tǒng)啟動概要文件中。有一些 DB2 UDB 注冊表變量只能設(shè)置為系統(tǒng)啟動的一部分。DB2 UDB V8.1 提供了 DB2 概要注冊表(DB2 Profile Registry)用以控制環(huán)境。在以前的發(fā)行版中,假如更改了環(huán)境級別,就需要重新引導(dǎo) DB2 UDB。現(xiàn)在有了一些例外,可以通過存儲在 DB2 概要注冊表中的注冊表變量對 DB2 UDB V8.1 環(huán)境進(jìn)行專門控制。可使用 db2set命令更新 DB2 UDB 注冊表變量;這些信息被立即存儲到概要注冊表中。DB2 概要注冊表將這些更新過的信息應(yīng)用到在進(jìn)行更改之后啟動的 DB2 UDB 服務(wù)器實(shí)例和應(yīng)用程序。也可以使用 set命令給環(huán)境級變量賦值,以用于臨時會話(以此方式設(shè)置的大部分變量會出現(xiàn)在 DB2 UDB 注冊表中;但是,有一些不會,如 DB2INSTANCE)。假如需要永久性設(shè)置某個環(huán)境變量,那么您應(yīng)該使用 db2set命令在工作站的啟動概要文件內(nèi)設(shè)置它。 set命令設(shè)置的環(huán)境變量只在命令行會話期間有效,而 db2set命令行則將環(huán)境變量永久性地設(shè)置在 DB2 概要注冊表中。要查看全部受支持的注冊表變量列表,請輸入以下命令: db2set -lr要更改 DB2 UDB 注冊表變量的值,請輸入以下命令: db2set registry_variable_name=new_value要查看被設(shè)置的全部 DB2 UDB 注冊表變量列表,請輸入以下命令:db2set -all此命令的輸出類似圖 4。圖 4. db2 set -all 命令的輸出請注重環(huán)境級變量前面有個 [e] ,而實(shí)例變量和全局變量前面分別為 [i] 和 [g] 。設(shè)置 DB2_CLPPROMPT 注冊表變量要定制 DB2 UDB CLP 命令提示符,請使用新的 DB2 UDB 注冊表變量:DB2_CLPPROMPT。您可以將 DB2_CLPPROMPT 設(shè)置為長度不超過 100 個字符的任何文本字符串。這個定制的字符串可包含在運(yùn)行時可替換的可選標(biāo)記。假如這個注冊表變量在 DB2 UDB CLP 會話期間發(fā)生更改,那么新的值在用戶退出再重新進(jìn)入該處理器后方可生效。可以將 DB2 UDB CLP 定制為只顯示一行字符串,這是最基本的形式。 圖 5和 圖 6演示了 DB2_CLPPROMPT 注冊表變量的設(shè)置以及 DB2 UDB CLP 的后續(xù)調(diào)用。圖 5. 設(shè)置命令行提示符注冊表變量圖 6. 結(jié)果現(xiàn)在,盡管這個示例挺有意思,但沒什么大用。DB2_CLPPROMPT 注冊表變量可以附帶一些關(guān)聯(lián)變量,可以用這些變量向 DB2 UDB CLP 返回一些關(guān)于當(dāng)前的或缺省的實(shí)例連接以及當(dāng)前所連接的(或缺省的)數(shù)據(jù)庫的信息。受支持的變量如 表 1所示。表 1.受 CLP 支持的運(yùn)行時變量變量 運(yùn)行時值 %ia 假如存在實(shí)例連接,則為當(dāng)前實(shí)例連接的授權(quán)標(biāo)識(authid);否則為空字符串。%i 假如實(shí)例連接存在,則為當(dāng)前所連接的實(shí)例的本地別名;假如不存在本地實(shí)例連接,則為 DB2INSTANCE 或 DB2INSTDEF 注冊表變量的值;否則,為空字符串。%da 假如存在數(shù)據(jù)庫連接,則為當(dāng)前數(shù)據(jù)庫連接的授權(quán)標(biāo)識;否則為空字符串。%d 假如數(shù)據(jù)庫連接存在,則為當(dāng)前連接的數(shù)據(jù)庫的本地別名;否則為 DB2DBDFT 注冊表變量值;再不然則為空值。%n 換行符。例如,要設(shè)置 DB2 UDB CLP 提示符,使其解析為:(Instance , Database ):輸入以下命令:db2set db2_clpprompt=" (Instance:%I, Database: %d):"您可以輸入 db2set all 命令來驗(yàn)證 DB2 UDB 概要注冊表中的該項(xiàng)設(shè)置。圖 7向您顯示了這一命令序列,包括在以交互模式啟動 CLP 會話之后的顯示結(jié)果。圖 7. 設(shè)置 DB2_CLPPROMPT 并驗(yàn)證其使用請注重此例中,我用了 未處于交互模式的 DB2 UDB CLP,這就是為什么交互模式在同一個窗口中被啟動的原因(我這樣做是讓您體會一下調(diào)用 DB2 UDB CLP 的不同方式)。圖 7 中,您會看到 變量沒有值。該變量之所以為空是因?yàn)樵谖业沫h(huán)境中沒有數(shù)據(jù)庫連接或者定義的缺省數(shù)據(jù)庫。假如您連接到數(shù)據(jù)庫,這個變量就會更新,如 圖 8所示。圖 8. 出現(xiàn)在提示符上的實(shí)例名和數(shù)據(jù)庫名假如我從這個數(shù)據(jù)庫斷開,這個定制的字符串會反映出這一操作。假如我接著再連接到不同的實(shí)例,在 DB2 UDB CLP 中也會得到動態(tài)的反映,如 圖 9所示。圖 9. 連接到新的 DB2 UDB 實(shí)例時,CLP 動態(tài)進(jìn)行更新DB2_CLPPROMPT 腦力測試對于 DB2_CLPPROMPT 變量,有很多組合變量的方法。我把它留給您去試驗(yàn),您不僅可以試驗(yàn)不同的可用變量,還可以看看它們對于不同環(huán)境設(shè)置的相應(yīng)結(jié)果。不過來一點(diǎn)“離別測試怎么樣?根據(jù)以下設(shè)置:db2set db2_clpprompt="db2 (%ia@%i, %da@%d):"以下條件下,您會看到什么結(jié)果?DB2INSTANCE 設(shè)為 TESTING。DB2DBFT 未設(shè)置。不存在已連接的實(shí)例連接,也不存在數(shù)據(jù)庫連接。單擊此處,獲得 答案。DB2INSTANCE 設(shè)為 DB2。DB2DBFT 設(shè)為 SAMPLE。DB2 實(shí)例有一個實(shí)例連接,授權(quán)標(biāo)識為 PAULZ。 單擊此處,獲得 答案。DB2INSTANCE 設(shè)為 DB2。DB2DBFT 設(shè)為 SAMPLE。只有一個數(shù)據(jù)庫連接到 SAMPLE 數(shù)據(jù)庫,授權(quán)標(biāo)識為 PAULZ。單擊此處,獲得 答案。關(guān)于作者 Paul C. Zikopoulos,文學(xué)士,MBA,是一位與 IBM Global Sales Support 小組合作的 IDUG 的專題和獲獎發(fā)言人。他有七年多的 DB2 使用經(jīng)驗(yàn),還寫了許多關(guān)于 DB2 的雜志文章和書籍。Paul 為很多雜志撰寫有關(guān) DB2 的文章,并且是多本書的合作者,包括: DB2 - The Complete Reference、DB2 Fundamentals Certification for Dummies、DB2 For Dummies以及 A DBA's Guide to Databases on Linux。Paul 是一位 DB2 認(rèn)證高級技術(shù)專家(DB2 Certified Advanced Technical Expert)(DRDA 和 Cluster/EEE)、DB2 認(rèn)證解決方案專家(DB2 Certified Solutions Expert)(商業(yè)智能(Business Intelligence)和數(shù)據(jù)庫治理(Database Administration))。您可以通過 paulz_ibm@msn.com 與他聯(lián)系。

標(biāo)簽:
DB2
數(shù)據(jù)庫
排行榜
