Hitachi

Hitachi Advanced Data Binder コマンドリファレンス


16.5.4 処理対象表がマルチチャンク表の場合

マルチチャンク表に定義されたインデクスを再作成している場合,adbidxrebuildコマンドの再実行機能を使用して,処理が中断したチャンクからインデクス再作成処理を再開できます。

〈この項の構成〉

(1) 再実行前の注意点

adbidxrebuildコマンドが異常終了したときと同じHADBユーザでadbidxrebuildコマンドを再実行すると,再実行機能が自動的に適用されます。特別な操作はありません。

ただし,adbidxrebuildコマンドの再実行時に-iオプションは変更しないでください。なお,adbidxrebuildコマンドの再実行時に,ほかのコマンドオプションおよびインデクス再作成オプションを変更する場合は,「16.5.5 再実行時にコマンドオプションおよびインデクス再作成オプションを変更する場合」を参照してください。

重要
メモ

インデクス再作成処理を開始したチャンクのチャンクIDはKFAA80211-Iメッセージに,処理が完了したチャンクのチャンクIDはKFAA80212-Iメッセージにそれぞれ出力されます。

(2) 再開時の処理(マルチチャンク表の場合)

マルチチャンク表に定義されたインデクスを再作成している場合,adbidxrebuildコマンドの中断タイミングによって,adbidxrebuildコマンドを再実行したときに処理がどこから再開されるかが決まります。

なお,データベースの回復方法はどの時点で中断が発生しても同じになります。

表16‒4 adbidxrebuildコマンドの中断タイミングによる再開時の処理(マルチチャンク表の場合)

中断のタイミング※1

表データの検索中

ソート処理中

B-treeインデクスとテキストインデクスの作成中※2

再開時の処理

処理が中断したチャンクの表データの検索から,インデクス再作成処理を再開します。※3

表の状態

次のどちらかの状態です。

  • 更新不可状態

  • adbidxrebuildコマンド実行前の状態

インデクスの状態

B-treeインデクス,テキストインデクス,およびレンジインデクスは,次のどちらかの状態です。

  • 未完状態

  • adbidxrebuildコマンド実行前の状態

  • サーバ定義のadb_cmd_ixrec_file_useオペランドにSINGLE-USE(省略値)を指定した場合

    再開時の処理表の状態,およびインデクスの状態は,「表データの検索中」と同じです。

  • サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合

    再開時の処理表の状態,およびインデクスの状態は,「B-treeインデクスとテキストインデクスの作成中」と同じです。

再開時の処理

処理が中断したチャンクのB-treeインデクスおよびテキストインデクスの作成処理から,インデクス再作成処理を再開します。※4

表の状態

更新不可状態です。

インデクスの状態

B-treeインデクス,テキストインデクス,およびレンジインデクスは未完状態です。

ただし,最後のチャンク※5の処理中に中断した場合は,レンジインデクスの再作成が完了しています(レンジインデクスの未完状態は解除されます)。

注※1

中断のタイミングは,次に示すように出力されたメッセージで確認できます。表のチャンクIDごとに,KFAA80211-Iメッセージ〜KFAA80212-Iメッセージが出力されます。

[図データ]

注※2

KFAA80204-Iメッセージ(リターンコードが0または4)が出力されている場合は,インデクス再作成処理はすべて完了しています。この場合,adbidxrebuildコマンドの再実行は不要です。

KFAA80204-Iメッセージが出力されていない場合は,次のコマンドを実行して出力結果(表のサマリ情報)の2行目を確認してください(出力結果の1行目は列のタイトルです)。

adbdbstatus -c table -n adbidxrebuildコマンドが中断した表名

adbidxrebuildコマンドが中断した表名は,「スキーマ名.表識別子」の形式で指定します。

Command_status列(17列目)の値がabort,かつRerun_command列(18列目)の値がadbidxrebuildのとき

[図データ]

インデクス再作成処理が完了していません。adbidxrebuildコマンドを再実行してください。

Command_status列(17列目)およびRerun_command列(18列目)に値が出力されていないとき

[図データ]

インデクス再作成処理が完了しています。adbidxrebuildコマンドの再実行は不要です。

注※3

最初のチャンクの表データの検索中にadbidxrebuildコマンドが中断した場合は,adbidxrebuildコマンドの再開時に最初からインデクス再作成処理を行います(再実行機能は適用されません)。

ただし,adbidxrebuildコマンドの再実行前に,再作成対象のインデクスをすべて削除した場合は,コマンドの終了処理だけ実行します。

注※4

次に示す場合は,処理が中断したチャンクの表データの検索からインデクス再作成処理を再開します。

  • --create-temp-fileオプションを指定してadbidxrebuildコマンドを再実行する場合

  • adbimportコマンド中断後に,--create-temp-fileオプションを指定して実行したadbidxrebuildコマンドが中断した場合

ただし,adbidxrebuildコマンドの再実行前に,再作成対象のインデクスをすべて削除した場合は,コマンドの終了処理だけ実行します。

注※5

処理対象表の最後のチャンクの処理中にadbidxrebuildコマンドが中断したことを確認するには,KFAA80211-Iメッセージに出力されている「現在処理中のチャンク数」と「全チャンク数」が等しいかどうかを確認してください。

KFAA80211-Iメッセージの出力例(処理対象表の最後のチャンクの処理中に中断した場合)

KFAA80211-I Processing for the chunk will start. (chunk id = 3) (3/3)