IBM Support

[Db2] 索引が無効化される原因と対処方法

Question & Answer


Question

データベースのロールフォワード後や HADR のスタンバイ・データベースで索引が無効化されることがあります。
これはなぜでしょうか、また無効化された場合の対処方法を教えてください。

Cause

Db2 はデフォルトで索引作成や再作成をトランザクション・ログに記録していません。
この場合、索引作成や再作成実行時に「索引無効」とだけログし、ロールフォワードなどでこのログを再生した側に索引の再作成を促します。

Answer

当文書では、索引作成、索引再編成(オフライン表再編成を含む)、索引再作成すべてを「索引再作成」と呼称します。
以下のケースで索引は無効化されます。
注: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
関連情報
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"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"}]

Document Information

Modified date:
15 August 2023

UID

ibm16467455