簡介
隨著自治技術的應用日益增加,DB2 服務器可能會產生很大的消息日志文件、管理通知日志文件和事件日志文件。在具有許多邏輯和物理分區的大型數據倉庫環境中,這種情況尤其顯著。另外,在出現問題時,為了滿足首次故障數據捕捉的需要,DB2 往往會產生大量診斷數據。
日志記錄活動的增加還會增加占用的文件系統空間,導致可管理性問題。簡單地刪除日志文件是不可行的,因為 DB2 支持人員常常要求用戶提供歷史診斷數據,尤其是在研究當前問題期間和遷移實例之後。
本文介紹一個新腳本,可以使用它對 DB2 實例的診斷日志和數據執行維護任務。這個腳本稱為 db2dback.ksh,可以通過後面 下載 部分中的 zip 文件獲得它。這個腳本可以在單一分區和多分區環境中運行,它會考慮不同的用戶設置,不同的物理分區可以使用共享的或單獨的診斷數據路徑。
腳本概述
db2dback.ksh shell 腳本可以對來自 DB2 實例配置的診斷數據路徑 (DIAGPATH) 的診斷數據進行存檔。還可以對目標(存檔)目錄中已經存檔的數據進行維護。
DB2 實例的所有者應該定期運行此腳本。可以手工運行此腳本,也可以通過調度工具(例如,cron 作業)運行。
此腳本當前可以處理 AIX 和 Linux 操作系統上的 DB2 實例。在這兩種環境中,它可以處理單分區實例或用 Data Partitioning Feature (DPF) 創建的多分區實例,還包括 Balanced Warehouse 設置。在 DPF 環境中,此腳本支持不同的實例配置:
在所有分區之間共享單一 DIAGPATH
每個物理分區使用單獨的 DIAGPATH
注意:DIAGPATH 是一個 DB2 數據庫管理程序配置參數值。如果在實例配置中沒有設置這個參數,那麼使用 DB2 實例所有者的默認值 $HOME/sqllib/db2dump。
安裝腳本
DB2 實例所有者可以按以下步驟安裝此腳本:
從下面的 下載 部分獲取 db2dback.zip 文件。
從 zip 文件中提取出 db2dback.ksh 腳本。
把 db2dback.ksh 復制到 DB2 實例的 sqllib/bin 目錄中。
必須有在 DPF 設置上遠程執行腳本所需的執行權限。
下面的命令示例設置正確的執行權限:
cp db2dback.ksh ~/sqllib/bin
chmod 755 ~/sqllib/bin/db2dback.ksh
獲得腳本幫助
可以用 –h 命令行選項運行 db2dback.ksh 腳本,顯示腳本選項的幫助:
$ db2dback.ksh -h
04-01-2009 13:13:25: DIAGPATH is set to /home3/agrankin/sqllib/db2dump
Usage: db2dback.ksh [-ahzvptl] [-o <path> ] [-r <days> ]
Options:
-h Print help message
-a Archive diagnostic data
-r <days> Remove diagnostic archives that are >
then <days> old. Can be combined with -a
-o <dir> Specify output directory
-z Compress diagnostic data tar archive
-v Verbose output.
-p Run diag data archiving in parallel
(default is sequential).
-l Local execution. This is used in cases
when db2dump is shared by all partitions.
It also can be used if archive runs on
just single physical partition.
-t Suboption for -a, archives data to a
tar archive at destination.
下面詳細介紹不同的選項。
指定目標(存檔)目錄
如果沒有在命令行上指定目標目錄,腳本使用 DIAGPATH/db2dump_archive 目錄作為默認的目標。如果此目錄不存在,腳本會創建它。
可以創建一個 DIAGPATH/db2dump_archive 鏈接,讓它指向另一個有足夠空間的本地或 NFS 掛載文件系統。在有多個物理分區的 DPF 設置中,如果物理分區不共享診斷路徑目錄,那麼必須在每個物理分區上創建此鏈接。
存檔
使用 –a (archive) 命令行選項存檔來自 DIAGPATH 的診斷數據:
db2dback.ksh -a [-o <destination_path> ]
在默認情況下,在 DPF 系統上腳本嘗試使用 rah 命令在每個物理分區上運行本身的本地版本。如果所有物理分區共享 DIAGPATH(BCU 不建議這麼做),可以使用 –l 子選項調用腳本的本地版本。
腳本把 db2diag.log 和管理日志文件重命名為 db2diag.log.<timestamp> 和 <instancename>.log.<timestamp>,然後為實例創建新的日志文件。然後,腳本使用 UNIX mv 命令轉移 DIAGPATH 中的所有文件和目錄,但是以下文件和目錄除外:
剛創建的 db2diag.log 和管理通知日志文件。
stmmlog 目錄中的自調優內存管理程序 (STMM) 日志文件。STMM 自動地管理它的日志文件使用的空間,通常不會讓空間總量超過 50MB。
在 15 分鐘以內創建的任何診斷數據文件或首次發生數據捕捉 (FODC) 目錄。這是為了確保在診斷數據轉儲期間啟動存檔的情況下,文件不會分配到不同的存檔或目標中。
從 DIAGPATH 轉移到新目標的所有文件保留原有的目錄層次結構。所有文件轉移到采用以下命名約定的子目錄中:
db2dback.<hostname>.YYYY-MM-DD-hhmmss
使用 –t 命令行選項為目標目錄中的所有診斷數據文件創建 tar 存檔:
db2dback.ksh -a -t [-o <destination_path> ]
從源目錄中刪除已經復制到 tar 存檔中的文件。上面的文件例外規則也適用於 tar 存檔。tar 文件采用以下命名約定:
db2dback.<hostname>.YYYY-MM-DD-hhmmss.tar
使用 –z 命令行子選項壓縮目標目錄中的文件。在默認情況下,腳本使用 gzip 工具壓縮文件。如果腳本在系統上找不到 gzip 命令,它會嘗試使用 compress 實用程序。可以與 –t 子選項同時使用此選項,也可以單獨使用:
db2dback.ksh -a –z [-o <destination_path> ]
db2dback.ksh -a -t –z [-o <destination_path> ]
在把數據發送給 tar 存檔時,工具在最後壓縮存檔。如果要轉移數據(沒有 –t 選項),那麼在目標目錄中分別壓縮轉移的每個文件。只壓縮超過 200KB 的文件。
在默認情況下,DPF 系統上的診斷數據存檔是連續的,這意味著工具每次存檔一個物理分區的數據。使用 –p 子選項對所有物理分區同時執行存檔。這會在腳本中的 DB2 rah 命令中插入 ||& 前綴。
維護存檔的診斷數據
用 -r 命令行選項執行腳本,可以執行基本的診斷數據存檔維護。可以與 –a 存檔選項同時使用此選項,也可以單獨使用。不帶 –a 選項的命令格式如下:
db2dback.ksh -r <number_of_days>
在使用此選項時,必須通過參數指定文件在存檔中保留的天數。
在與 –a 存檔選項同時使用 -r 選項時,工具先存檔診斷數據,然後嘗試刪除舊文件。帶 –a 選項的命令格式如下:
db2dback.ksh -a -r 180
天數參數可以指定為 0(零),表示希望刪除除了 db2dback.ksh 實用程序日志文件之外的所有存檔文件。
腳本日志文件
db2dback.ksh 腳本把消息寫入自己的日志文件。這些消息報告進度並記錄所有錯誤。腳本為每個物理分區創建單獨的日志文件。日志文件的命名約定使用機器的主機名,如下所示:
db2dback.<hostname>.log
腳本在存檔目標目錄中創建日志文件。文件只包含最近一次調用腳本的相關信息,這確保文件本身不會增長得太大。下面是日志文件的示例:
db2dback.ksh
02-05-2009 19:00:38: Option -r specifIEd
02-05-2009 19:00:38: Removing all archives older than 0 days
02-05-2009 19:00:38: Removing archive db2dback.p6db2serv.2009-02-05-190017
結束語
使用這個腳本可以輕松地管理 AIX 或 Linux 上的 DB2 的診斷日志。試一下,您會體驗到管理診斷數據是多麼容易。
本文示例源代碼或素材下載