學習 DB2LOOK 命令(轉)

wangkxxe發表於2009-06-26
第一步,欲善其工,必先利其器
熟練的掌握資料庫提供的各個工具,是做好DBA的基礎。
在DB2所提供的眾多工具中,DB2LOOK 絕對是我們最常用的工具之一。隨著DB2 V9.5最新版本的推出,很多工具也增加了新的功能。

在學習之時,請務必保證自己手頭有“四大至寶”:
•DB2 任意版本
        無論是 UDB 還是 Express-C,無論是 Windows 還是 Linux版,必須有一個(廢話)

•DB2 資訊中心
此為學習DB2的“聖經”~以下是各個版本的URL
DB2 V8 資訊中心

DB2 V9 資訊中心

DB2 V9.5 資訊中心


•IBM DeveloperWorks
        擁有大量的技術文件和教程,十分全面,而且最新:
http://www-128.ibm.com/developerworks
        English 不太好的可以看中文的
        http://www-128.ibm.com/developerworks/cn/

• ITPUB
        這個至寶就法力超高,眾仙雲集~
       
以上“四大至寶”請務必隨時“在手”,如果能夠做到“在心”,那你就進入高手行列,估計相當於 ITPUB 眾牛人 myfriend2010, diablo2, bpmfhu, wangzhonnew, qqone, askgyliu, macrozeng, unixnewbie 等的 60% 功力,一般的小問題就可以自行解決了。

第二步,學習基礎知識
DB2LOOK 語法
>>-db2look-- -d--DBname--+-----+--+--------------+--------------&gt
                         '- -e-'  '- -u--Creator-'   

>--+-------------+--+-------------------------------------+-----&gt
   '- -z--schema-'  '-+----------------+--+-------------+-'   
                      |      .-------. |  '- -tw--Tname-'     
                      |      V       | |                     
                      '- -t----Tname-+-'                     

>--+------+--+------+--+----------------+--+-----+--+------+----&gt
   '- -ct-'  '- -dp-'  |      .-------. |  '- -h-'  '- -ap-'   
                       |      V       | |                     
                       '- -v----Vname-+-'                     

>--+------------+--+-----+--+-----------------------+-----------&gt
   '- -o--Fname-'  '- -a-'  '- -m--+-----+--+-----+-'   
                                   '- -c-'  '- -r-'     

>--+-----+--+-----+--+------+--+-----+--+-----------------+-----&gt
   '- -l-'  '- -x-'  '- -xd-'  '- -f-'  '- -td--delimiter-'   

>--+----------+--+----------------------------+--+-------+------&gt
   '- -noview-'  '- -i--userid-- -w--password-'  '- -wlm-'   

>--+------------------+--+---------+--+-----------+-------------&gt
   +- -wrapper--Wname-+  '- -nofed-'  '- -fedonly-'   
   '- -server--Sname--'                              

>--+---------------------------+-------------------------------&gt<
   '- -xs--+-----------------+-'   
           '- -xdir--dirname-'     

重要引數詳解:
-d DBname                        : 指定 資料庫名
-e                                        : 生成 資料庫物件的 DDL 語句
-l                                        : 生成 使用者定義的 表空間、資料庫分割槽組、Buffer Pools
                                                的 DDL 語句
-u Creator                        : 指定 建立者ID 的物件
-a                                        : 指定不限制 建立者
-z schema                        : 指定 Schema
-t Tname1 Tname2 ... TnameN                : 指定 特定的 表
-v Vname1 Vname2 ... VnameN                : 指定 特定的 View
-tw  Tname                        : 指定 表名字的匹配格式,日誌表'LOG%'
-o OutputFile                : 指定輸出結果檔名
-m                                        : 生成 複製 統計資訊表的 UPDATE 語句。
-x                                        : 生成 使用者許可權 相關DDL
-xd                                        : 生成 系統許可權 相關DDL
-xs                 :XML模式儲存庫(XSR)物件(XML模式、DTD和外部實體)
-xdir dirname                        :XSR物件的放置位置

第三步,實踐出真知
引用名人的一句話“紙上來得終覺淺,絕知此事要躬行!”  --- 出自 ITPUB 元老 owlstudio

“君子動口,更要動手”  --- 自 俊哥兒張
囧TL

要想成為真正的高手,豐富的理論知識是不夠的,還必須深入實踐,精益求精~

下面是 db2look 命令的一些應用例項,各個例項關注的重點不同:

例項1. 生成資料庫物件DDL的順序
這裡我們關注的 DDL 的生成順序,命令如下:
db2look -d SAMPLE -a -e  -c

詳解:
結果無CREATE DATABASE 及相關語句,按照下列順序依次生成DDL:
以下是我們常見的資料庫DDL 生成順序:
        CONNECT TO SAMPE
開始
        XSR 物件的 DDL 語句
        模式(SCHEMA)
        序列(SEQUENCE)
        表(TABLE)
        主鍵(FOREIGN)
        索引(INDEX)
        外來鍵(FOREIGN KEY)
        其它約束(CHECK)
        使用者定義的函式的 DDL 語句
        FUNCTION
        檢視(VIEW)
        別名(ALIAS)
        儲存過程(PROCEDURE)
        觸發器(TRIGGER)

最後,以
        COMMIT WORK;
        CONNECT RESET;
        TERMINATE;
結束

例項2. 檢視特定表
如果認為下面的語句可以生成表 EMPLOYEE 的DDL,
db2look -d SAMPLE -t  " EMPLOYEE "

那就大錯特錯了!

這裡我們要注意的是,並沒有生成DDL語句,
要想生成DDL語句,必須使用如下命令:
db2look -d SAMPLE -t  " EMPLOYEE "  -a –e –c

但是,這裡邊有大量的垃圾資訊,注意過濾。

例項3. 生成 XSR 物件的 DDL 語句
db2look -d SAMPLE -a -e  -xs  -xdir e:  -c  -o e:db2look.sql

生成的DDL如下:
------------------------------------------------
-- XSR 物件的 DDL 語句 "DB2INST1"."CUSTOMER"
------------------------------------------------

REGISTER XMLSCHEMA "" FROM e:doc_562949953421312 AS "DB2INST1"."CUSTOMER";

COMPLETE XMLSCHEMA "DB2INST1"."CUSTOMER" WITH e:md_281474976710656;

您可以到據此在 e:doc_562949953421312 和 e:md_281474976710656 中找到您需要的更詳細的資訊。

例項4. 生成統計資訊表的UPDATE語句
這個例項主要是學習 –m 選項,在模擬方式下執行 db2look 實用程式。

此選項將生成包含 SQL UPDATE 語句的指令碼,這些 SQL UPDATE 語句捕獲所有統計資訊,可以對另一個資料庫執行此指令碼以便複製初始的那一個。

注意:當指定了 -m 選項時,將忽略 -p、-g 和 -s 選項

我們什麼時候用的到該選項呢?如果測試資料庫用於測試效能或除錯效能問題,則對兩個資料庫生成的訪問方案應該完全相同。最佳化器根據統計資訊、配置引數、登錄檔變數和環境變數來生成訪問方案。如果兩個系統間的這些設定完全相同,則訪問方案很可能是相同的。

如果將完全相同的資料裝入到兩個資料庫中,並且對它們兩個執行相同的 RUNSTATS 選項,則統計資訊也應該完全相同。

但是,如果資料庫包含不同資料,或者如果測試資料庫中只使用資料的子集,則統計資訊可能會有顯著差別。在這種情況下,可使用 db2look 來從生產資料庫收集統計資訊並將它們放在測試資料庫中。透過對可更新表的 SYSSTAT 集合建立 UPDATE 語句並對所有表建立 RUNSTATS 命令來執行此操作。

用於建立統計資訊語句的選項為 -m。返回至 SAMPLE/SAMPLE2 示例,從 SAMPLE1 收集統計資訊並將其新增至 SAMPLE2:

db2look -d sample1 -m –o  statsupdate.sql

修改完指令碼 statsupdate.sql 後就可以應用到 sample2 上了

db2 –tvf  statsupdate.sql

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

相關文章