16.5.4 処理対象表がマルチチャンク表の場合
マルチチャンク表に定義されたインデクスを再作成している場合,adbidxrebuildコマンドの再実行機能を使用して,処理が中断したチャンクからインデクス再作成処理を再開できます。
- 〈この項の構成〉
(1) 再実行前の注意点
adbidxrebuildコマンドが異常終了したときと同じHADBユーザでadbidxrebuildコマンドを再実行すると,再実行機能が自動的に適用されます。特別な操作はありません。
ただし,adbidxrebuildコマンドの再実行時に-iオプションは変更しないでください。なお,adbidxrebuildコマンドの再実行時に,ほかのコマンドオプションおよびインデクス再作成オプションを変更する場合は,「16.5.5 再実行時にコマンドオプションおよびインデクス再作成オプションを変更する場合」を参照してください。
- 重要
-
-
コマンドステータスファイル($DBDIR/ADBSYS/ADBUTLディレクトリ下のファイル)に対するアクセスエラー(KFAA50244-Eメッセージ)が発生した場合は,--forceオプションを指定してadbidxrebuildコマンドを実行し直してください(このとき,インデクス再作成処理は最初から実行されます)。
--forceオプションを指定してadbidxrebuildコマンドを実行する方法については,「16.5.6 adbidxrebuildコマンドの再実行時にエラーが発生した場合」の「(2) --forceオプションを指定してadbidxrebuildコマンドを実行するケース」を参照してください。
-
作業用一時ファイルに対するアクセスエラー(KFAA50247-Eメッセージ)が発生した場合は,--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行し直してください(このとき,インデクス再作成処理は表データの検索から実行されます)。
--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行する方法については,「16.5.6 adbidxrebuildコマンドの再実行時にエラーが発生した場合」の「(1) --create-temp-fileオプションを指定してadbidxrebuildコマンドを実行するケース」を参照してください。
-
- メモ
-
インデクス再作成処理を開始したチャンクのチャンクIDはKFAA80211-Iメッセージに,処理が完了したチャンクのチャンクIDはKFAA80212-Iメッセージにそれぞれ出力されます。
(2) 再開時の処理(マルチチャンク表の場合)
マルチチャンク表に定義されたインデクスを再作成している場合,adbidxrebuildコマンドの中断タイミングによって,adbidxrebuildコマンドを再実行したときに処理がどこから再開されるかが決まります。
なお,データベースの回復方法はどの時点で中断が発生しても同じになります。
中断のタイミング※1 |
||
---|---|---|
表データの検索中 |
ソート処理中 |
B-treeインデクスとテキストインデクスの作成中※2 |
|
|
|
- 注※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)