DB2中索引(index)失效的原因、確認、重建及監控
阿新 • • 發佈:2019-02-03
本文總結了DB2中索引失效的幾種常見原因,如何找出所有失效的索引以及判斷某個索引是否失效,如何重建失效的索引,以及如何監控索引建立/重建的進度
索引失效的原因
1.) 如果logindexbuild是off(預設選項),那麼建立、重建索引的操作不會記錄到日誌中,之後如果有rollforward操作時,這些索引就會被標記為無效。(例如在t1時刻建立了表並做了backup,在t2時刻建立/重建了索引,那麼之後rollforward到t2時,索引就會失效)2.) load使用了 INDEXING MODE DEFERRED選項
3.) db2dart顯示地將索引標記為無效了。db2dart有一個選項/MI,只需要輸入表ID、表空間ID,即可將該表上的索引標記為無效。
4.) 之前索引重建/reorg失敗了。 Reorg操作如果因為某些原因失敗,比如臨時表空間不足,則由可能導致索引重建失敗,變為失效狀態
檢視索引是否失效
下面這條SQL可以檢視所有 表模式名 "E105Q5A"下所有表上所有需要重建的索引
db2 "SELECT substr(TABNAME,1,20) as TABNAME, substr(INDSCHEMA,1,20) as INDSCHEMA, substr(INDNAME,1,20) as INDNAME, INDEX_REQUIRES_REBUILD FROM TABLE(sysproc.admin_get_index_info('','E105Q5A','')) AS t where INDEX_REQUIRES_REBUILD= 'Y' " TABNAME INDSCHEMA INDNAME INDEX_REQUIRES_REBUILD -------------------- -------------------- -------------------- ---------------------- T1 E105Q5A IDX1 Y T1 E105Q5A IDX2 Y 2 record(s) selected.
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0054905.html
如何重建失效的索引:
1.) 所有對錶的訪問都被導致失效索引被自動重建2.) 若indexrec設定為RESTART(預設選項),發出restart database命令也可會自動重建
監控索引重建:
首先診斷日誌會在開始和結束階段各列印一條訊息2017-03-14-13.03.55.339517+480 E201703A552 LEVEL: Warning PID : 37093388 TID : 3343 PROC : db2sysc 0 INSTANCE: e105q5a NODE : 000 DB : SAMPLE APPHDL : 0-9 APPID: *LOCAL.e105q5a.170314035841 AUTHID : E105Q5A HOSTNAME: db2b EDUID : 3343 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, data management, sqldLoadTCB, probe:10797 MESSAGE : ADM5572I One or more indexes on table "E105Q5A .T1" are marked invalid and require rebuilding. 2017-03-14-13.03.55.354589+480 E202256A507 LEVEL: Warning PID : 37093388 TID : 3343 PROC : db2sysc 0 INSTANCE: e105q5a NODE : 000 DB : SAMPLE APPHDL : 0-9 APPID: *LOCAL.e105q5a.170314035841 AUTHID : E105Q5A HOSTNAME: db2b EDUID : 3343 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, data management, sqldBeginIndexCreate, probe:1 MESSAGE : ADM5540W Rebuilding "2" indexes on table "E105Q5A .T1". 2017-03-14-13.03.55.356059+480 E202764A566 LEVEL: Warning PID : 37093388 TID : 3343 PROC : db2sysc 0 INSTANCE: e105q5a NODE : 000 DB : SAMPLE APPHDL : 0-9 APPID: *LOCAL.e105q5a.170314035841 AUTHID : E105Q5A HOSTNAME: db2b EDUID : 3343 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, data management, sqldIndexCreate, probe:1 MESSAGE : ADM5541W Rebuilding index with IID "1" in object with ID "13" and table space ID "3" on table "E105Q5A .T1". 2017-03-14-13.03.55.358700+480 E203331A566 LEVEL: Warning PID : 37093388 TID : 3343 PROC : db2sysc 0 INSTANCE: e105q5a NODE : 000 DB : SAMPLE APPHDL : 0-9 APPID: *LOCAL.e105q5a.170314035841 AUTHID : E105Q5A HOSTNAME: db2b EDUID : 3343 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, data management, sqldIndexCreate, probe:1 MESSAGE : ADM5541W Rebuilding index with IID "2" in object with ID "13" and table space ID "3" on table "E105Q5A .T1". 2017-03-14-13.03.55.367301+480 E203898A515 LEVEL: Warning PID : 37093388 TID : 3343 PROC : db2sysc 0 INSTANCE: e105q5a NODE : 000 DB : SAMPLE APPHDL : 0-9 APPID: *LOCAL.e105q5a.170314035841 AUTHID : E105Q5A HOSTNAME: db2b EDUID : 3343 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, data management, sqldEndIndexCreate, probe:1 MESSAGE : ADM5542W Indexes on table "E105Q5A .T1" are successfully rebuilt.
實時監控重建進度的話,可以參考下面的連結:
http://www-01.ibm.com/support/docview.wss?uid=swg21984248