一、 DB2日常維護日操作 3
1、 檢查管理服務器是否啟動 3
2、 檢查DB2實例是否已經啟動 3
3、 查看表空間狀態是否正常 3
4、 查看表的狀態 4
5、 查看磁盤空間 4
6、 檢查存儲管理軟件是否正常 4
7、 檢查數據庫備份是否正常 5
8、 檢查歸檔日志是否正確歸檔了 5
9、 查看緩沖池的命中率 5
10、 查看當前運行最頻繁的SQL,其命中率是否正常 5
11、 查看當前連接的應用程序,有沒有非法連接 5
12、 檢查有沒有死鎖 6
13、 對表和索引進行RUNSTATS 6
14、 檢查表是否需要重組 6
15、 對需要重組的表進行重組 7
二、 DB2日常維護月操作 7
1、 查看DB2日志 7
2、 檢查備份和日志是否都保存好了 7
三、 DB2日常維護季度操作 7
1、 通過快照監控器,查看系統性能如何 7
2、 數據庫補丁級別 8
四、 注意事項 8
1、 不要刪除活動日志文件 8
2、 注意交易日志存儲空間 8
3、 按照系統的實際工作量配置日志空間 8
4、 設置正確數據庫代碼頁 9
5、 檢查許可證(LICENSE)安裝情況 9
6、 創建數據庫前調整好系統時間 9
7、 不要隨便執行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
8、 在歸檔日志模式下使用LOAD記得加NONRECOVERABLE參數 9
五、 附:以脫機方式重組表 9
六、 附:索引重組 10
七、 附:收集和更新統計信息的准則 11
八、 附:使用 CLP 捕獲數據庫運行狀況快照 13
一、 DB2日常維護日操作
1、 檢查管理服務器是否啟動
用ps命令查看是否有dasusr1後台進程
#ps -ef | dasusr1
請確保管理服務器已經啟動,如果沒有啟動,則按以下步驟啟動管理服務器:
以管理服務器用戶(UNIX默認是DASUSR1)登錄
發出db2admin start命令
如果是HA環境,則要保證在腳本中正確配置了啟動命令
2、 檢查DB2實例是否已經啟動
用ps命令查看是否有db2sysc後台進程
#ps -ef | db2sysc
也可以以DB2實例所有者登錄,通過發出db2start命令來確保啟動了實例(如果實例已經啟動,則會告知SQL1026N 數據庫管理器已激活;否則,將把實例啟動起來)
3、 查看表空間狀態是否正常
以db2實例所有者登錄
#db2 list tablespaces show detail //在單分區上查看表空間的狀態,正常返回0x0000
# db2_all list tablespaces show detail //在所有分區上查看表空間的狀態
可以使用LIST TABLESPACES 命令確定連接數據庫中表空間的當前狀態,可以使用SHOW DETAIL選項查看表空間的詳細信息。比如,我們連上SAMPLE數據庫,執行list tablespaces show detail ,可以看到狀態返回值是0x0000,此時,使用db2tbst可以查看狀態編號對於的狀態含義,具體語法如下:
db2tbst <tablespace state> 可以查看編號所代表的狀態
db2tbst 命令接收十六進制的狀態值,並返回相應的表空間狀態。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而該十六進制的狀態值反過來又是 LIST TABLESPACES 命令輸出的組成部分。表空間的外部可見狀態是由單個狀態值的十六進制總和構成的。例如,如果表空間的狀態是 Backup Pending和 Load in Progress,那麼所返回的十六進制值就是 0x20020(0x00020 + 0x20000)
4、 查看表的狀態
查詢系統目錄視圖以獲得關於數據庫的有用信息。例如,下面的語句使用 NOT LIKE 斷言,返回在 SYSCAT.TABLES 中有項的所有用戶定義的表的名稱,以及每個表的列數和表的狀態(N = 正常;C = 待審核(check pending))
#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE SYS% ORDER BY tabname
也可以使用load query命令查看單個表的狀態,比如對表TEST1,我們可以發出如下命令:
#db2 load query table test1
5、 查看磁盤空間
查看數據庫活動日志目錄是否已滿,活動日志目錄可以使用get db cfg查看,注意一定不要手工刪除活動日志
#df -k
查看SMS表空間對應的容器目錄空間是否滿了
#df -k
查看DMS表空間中是否還有可用頁
#db2 list tablespaces show detail //在單分區上查看表空間的是否還有可用頁
# db2_all list tablespaces show detail //在所有分區上查看表空間是否還有可用頁
6、 檢查存儲管理軟件是否正常
請檢查TSM或其他存儲管理軟件是否正常,以及磁帶機是否運行正常。
7、 檢查數據庫備份是否正常
請查看TSM或第三方存儲管理軟件,看備份映像文件是否完整的保存到了磁帶機上了,想在DB2上查看備份情況,可以使用LIST命令
# db2 list history backup all for 數據庫名
8、 檢查歸檔日志是否正確歸檔了
請確保活動日志目錄下沒有的日志文件都已經正確歸檔到了帶機上(查看TSM或第三方存儲管理軟件)。
查看活動目錄裡的日志文件:
#ls -l
9、 查看緩沖池的命中率
# db2 get snapshot for bufferpools on 數據庫名
查看緩沖池的命中率,看其是否低於95%(命中率越高越好)
10、 查看當前運行最頻繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 數據庫名 > log.txt
用grep命令查看" Number of executions"執行次數最頻繁的語句,看其命中率是否正常。
比如:
grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,5rn | more
11、 查看當前連接的應用程序,有沒有非法連接
#db2 list applications show detail
看這些連接的情況,看有沒有不合適的IP連上來,或者不被允許的第三方工具連上來,比如一些第三方工具連上來會對表進行鎖定,影響業務系統正常運行,這個時候可以用FORCE APPLICATIONS (應用程序句柄)停下來。
12、 檢查有沒有死鎖
# db2 get snapshot for all on 數據庫名 > log.txt
用grep命令查看輸出的文件中是否有死鎖的記錄,比如
grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more
13、 對表和索引進行runstats
#db2 runstats on table 表名 and index all
對系統表以及變化比較頻繁的表運行統計信息,建議寫成shell腳本自動運行。
14、 檢查表是否需要重組
使用REORGCHK命令,通過統計數據檢查表是否需要重組,語法如下:
REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]
UPDATE STATISTICS: 更新表的統計數據,根據該統計數據判斷是否需要重組表
CURRENT STATISTICS:根據當前表統計數據判斷是否需要重組表
TABLE table_name : 對單個表進行分析
TABLE ALL: 對數據庫所有的表進行分析
TABLE SYSTEM: 對系統表進行分析
TABLE USER : 對當前用戶模式下的所有表進行分析
#db2 reorgchk update statistics on table all
15、 對需要重組的表進行重組
#db2 reorg table 表名 //通過重構行來消除“碎片”數據
#db2 reorg indexes all for table 表名 //只重組索引
比如:
reorg table db2inst1.org index by_id
將根據索引by_id,如果不加INDEX選項將重組表和所有的索引
reorg table db2inst1.org index by_id use tempspace1
使用指定的臨時表空間重組表
表重組完成後需要進行RUNSTATS。另外,記住在分區數據庫環境中,如果想在所有節點運行命令,需要使用db2_all命令。
二、 DB2日常維護月操作
1、 查看DB2日志
請至少每月查看一次db2diag.log文件,看其中是否有異常。
2、 檢查備份和日志是否都保存好了
通過TSM或第三方存儲管理軟件,查看備份和歸檔日志是否都保存好了,在數據庫級別查看備份,可以使用:
# db2 list history backup all for 數據庫名
三、 DB2日常維護季度操作
1、 通過快照監控器,查看系統性能如何
通過快照監控器,抓取數據庫的信息,分析數據庫性能是否合理:
# db2 get snapshot for all on 數據庫名 > log.txt
2、 數據庫補丁級別
# db2level
四、 注意事項
1、 不要刪除活動日志文件
DB2 的活動日志文件不能被刪除。一旦 DB2 的活動日志文件被刪除,或者所在的存儲設備出現問題,則不可避免地造成 DB2 數據庫系統宕機。
2、 注意交易日志存儲空間
在歸檔日志模式下,如果沒有使用自動歸檔方式,則存儲的日志文件會不斷增多,有可能造成日志所在的文件系統空間滿。 當這種情況發生時,會根據參數 BLK_LOG_DSK_FUL 的配置而有不同的現象:
1)如果該參數啟用,則 DB2 數據庫可繼續讀操作,但是寫操作會掛起
2)如果該參數沒有啟用,則 DB2 數據庫會停止工作
兩種情況下,都需要到日志所在的文件系統添加了空間才恢復正常。
3、 按照系統的實際工作量配置日志空間
DB2數據庫通過日志文件維護數據的完整性和一致性。DB2 數據庫的日志空間可通過如下公式計算:
日志空間 = (主日志文件 + 二級日志文件) * 日志文件尺寸
其中:
1) 主日志文件由參數 LOGPRIMARY 控制,
2) 二級日志文件由參數 LOGSECOND 控制
3) 日志文件尺寸由參數 LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,請參看相同版本的 DB2 手冊確認)
4、 設置正確數據庫代碼頁
由於數據庫的代碼頁在數據庫創建之後是無法修改的,所以在創建數據