Question & Answer
Question
データベースのロールフォワード後や HADR のスタンバイ・データベースで索引が無効化されることがあります。
これはなぜでしょうか、また無効化された場合の対処方法を教えてください。
Cause
Db2 はデフォルトで索引作成や再作成をトランザクション・ログに記録していません。
この場合、索引作成や再作成実行時に「索引無効」とだけログし、ロールフォワードなどでこのログを再生した側に索引の再作成を促します。
Answer
当文書では、索引作成、索引再編成(オフライン表再編成を含む)、索引再作成すべてを「索引再作成」と呼称します。
以下のケースで索引は無効化されます。
注:LOGINDEXBUILD=NO (デフォルト) の場合、索引再作成はログされません。
注:LOGINDEXBUILD=NO (デフォルト) の場合、索引再作成はログされません。
- ログされていない索引再作成が再生されたとき
- ログされている索引再作成が再生されたが、INDEXREC が ACCESS_NO_REDO または RESTART_NO_REDO と設定されているとき
- オフライン索引再作成が失敗したとき、またはこの失敗が再生されたとき
- db2dart の /MI オプションが実行されたとき
索引作成、索引再作成のトリガーには以下のようなものがあります。
- データベース再始動 (RESTART DB) 時に無効な索引があったとき (INDEXREC=RESTART)
- 無効な索引がアクセスされたとき
- 表のオフライン再編成が行われたとき
- 索引再編成が行われたとき
- CREATE INDX ステートメントが実行されたとき
- LOAD コマンドの INDEXING MODE として REBUILD が選択されたとき
- IMPORT または LOAD が REPLACE オプションで実行されたとき
- TRUNCATE TABLE ステートメントが実行されたとき
無効な索引は以下の SQL で一覧できます。
db2 connect to <database_name>
db2 "select tabschema, tabname, indname, datapartitionid, index_partitioning from table(sysproc.admin_get_index_info('','','')) as t where index_requires_rebuild='Y'"
索引が無効化された場合、以下のいずれかの方法で回復できます。
a) データベースの再始動 (INDEXREC=RESTART の場合)
INDEX_REQUIRES_REBUILD=Y の索引がすべて再作成されます。
db2 restart database <database_name>
b) 索引再編成
db2 reorg indexes all on table <table_name> allow no access
データベース再始動による索引作成は db2pd -util で、索引再編成による索引作成は db2pd -reorg -alldbs でモニターできます。
運用上の考慮点
LOGINDEXBUILD を YES にすると索引再作成がログされるようになるため、索引の無効化を防止できます。
このため、特に HADR を使用する場合は LOGINDEXBUILD=YES が強く推奨されます。
設定方法 (変更は即時反映されます)
db2 connect to <database_name>
db2 update db cfg using LOGINDEXBUILD YES
関連情報
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlTAAU","label":"Database Objects-\u003EIndexes"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
ibm16467455