16.1.3 adbidxrebuildコマンドのオプション機能
adbidxrebuildコマンドには,次に示すオプション機能があります。
-
再実行機能
-
adbimportコマンドからのインデクス作成処理の引き継ぎ
(1) 再実行機能
adbidxrebuildコマンドが異常終了するなどした場合は,adbidxrebuildコマンドの再実行時に,前回のインデクス再作成で内容が保証されている個所の続きからインデクス再作成処理を実行します。このため,インデクス再作成処理の再実行に掛かる時間を短縮できます。
次に示す条件を満たす場合,再実行機能が適用されることがあります。
-
再作成するインデクスの中に,次に示すどれかのインデクスが含まれている※
-
シングルチャンク表に定義されたB-treeインデクス
-
シングルチャンク表に定義されたテキストインデクス
-
マルチチャンク表に定義されたインデクス
- 注※
-
adbidxrebuildコマンドの再実行前に,処理対象表のインデクスをDROP INDEX文で削除した場合,削除したインデクスは再作成されません。また,adbidxrebuildコマンドの再実行前に再作成対象のインデクスをすべて削除した場合は,コマンドの終了処理だけが実行されます。
-
-
次に示すどれかの理由で処理が中断している
-
adbidxrebuildコマンドが異常終了した
-
adbcancelコマンドでadbidxrebuildコマンドを強制終了した
-
adbstop --forceコマンドでHADBサーバを強制終了した
-
OSのkillコマンド,電源断などでサーバプロセスを強制終了した
-
なお,次に示す場合,上記の条件を満たしていても,再実行機能は適用されません(インデクス再作成処理の初めから強制実行されます)。
-
--forceオプションを指定してadbidxrebuildコマンドを実行する場合
-
adbimportコマンドが中断したあとに--forceオプションを指定して実行したadbidxrebuildコマンドが中断した場合
-
adbunarchivechunkコマンドの実行時にエラーが発生した場合
再作成対象のインデクスが定義された表(処理対象表)の定義時にCHUNK を指定したかどうか(処理対象表がシングルチャンク表か,マルチチャンク表か)によって,再実行機能の適用条件,および再実行時の処理が異なります。
- 処理対象表がシングルチャンク表の場合
-
インデクス再作成処理では,表データを検索してレンジインデクスを再作成したあとに,B-treeインデクスおよびテキストインデクスを再作成します。
B-treeインデクスおよびテキストインデクスの再作成処理中にadbidxrebuildコマンドが中断した場合,再実行機能が適用されます。adbidxrebuildコマンドを再実行すると,B-treeインデクスおよびテキストインデクスの再作成処理からインデクス再作成処理が再開されます。
図16‒4 再実行機能の概要(シングルチャンク表の場合) - 注※
-
次の順序でインデクスの作成処理が実行されます。
-
インデクスレコードのソート処理
-
1.のソート処理結果を入力情報にしてインデクスを作成
2.の処理中にadbidxrebuildコマンドが中断した場合,再実行機能が適用されます。adbidxrebuildコマンドを再実行すると,2.の処理から再開されます。
なお,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,1.の処理中にadbidxrebuildコマンドが中断したときも,再実行機能が適用されます。adbidxrebuildコマンドを再実行すると,1.の処理から再開されます。
-
次に示すときは,再実行機能が適用されません。
-
レンジインデクスだけを再作成しているとき
-
インデクスレコードのソート処理が完了する前(KFAA80220-Iメッセージの出力前)にadbidxrebuildコマンドが中断したとき
ただし,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,表データの検索が完了する前(KFAA80233-Iメッセージの出力前)にadbidxrebuildコマンドが中断したとき
-
--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行するとき
- メモ
-
サーバ定義のadb_cmd_ixrec_file_useオペランドについては,マニュアルHADB システム構築・運用ガイドのコマンドに関するオペランド(set形式)を参照してください。
- 処理対象表がマルチチャンク表の場合
-
処理対象表がマルチチャンク表の場合,インデクス再作成処理はチャンクごとに実行されます。
このため,マルチチャンク表の処理が中断したときは,adbidxrebuildコマンドを再実行すると再実行機能が適用され,処理が中断したチャンクからインデクス再作成処理が再開されます。
ただし,最初のチャンクのインデクスレコードのソート処理が完了する前(KFAA80220-Iメッセージの出力前)※にadbidxrebuildコマンドが中断したときは,再実行機能が適用されません。
- 注※
-
サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合,表データの検索が完了する前(KFAA80233-Iメッセージの出力前)にadbidxrebuildコマンドが中断したときは,再実行機能が適用されません。
図16‒5 再実行機能の概要(マルチチャンク表の場合) また,次に示す3つの条件を満たすときは,処理が中断したチャンクのB-treeインデクスおよびテキストインデクスの作成処理から,インデクス再作成処理が再開されます。
-
再作成するインデクスの中にB-treeインデクスまたはテキストインデクスが含まれている
-
処理が中断したチャンクのインデクスレコードのソート処理が完了している(ソート処理が完了するとKFAA80220-Iメッセージが出力されます)
ただし,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,処理が中断したチャンクの表データの検索が完了している(表データの検索が完了するとKFAA80233-Iメッセージが出力されます)
-
adbidxrebuildコマンドの再実行時に,--create-temp-fileオプションを指定していない(--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行すると,処理が中断したチャンクの表データの検索から,インデクス再作成処理が再開されます)
図16‒6 処理が中断したチャンクのB-treeインデクスおよびテキストインデクスの作成処理からの再実行 - 注※
-
次の順序でインデクスの作成処理が実行されます。
-
インデクスレコードのソート処理
-
1.のソート処理結果を入力情報にしてインデクスを作成
2.の処理中にadbidxrebuildコマンドが中断した場合,再実行機能が適用されます。adbidxrebuildコマンドを再実行すると,2.の処理から再開されます。
なお,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,1.の処理中にadbidxrebuildコマンドが中断したときも,再実行機能が適用されます。adbidxrebuildコマンドを再実行すると,1.の処理から再開されます。
-
- メモ
-
サーバ定義のadb_cmd_ixrec_file_useオペランドについては,マニュアルHADB システム構築・運用ガイドのコマンドに関するオペランド(set形式)を参照してください。
(2) adbimportコマンドからのインデクス作成処理の引き継ぎ
adbidxrebuildコマンドは,adbimportコマンドからインデクス作成処理を引き継ぐことができます。
次に示す理由でadbimportコマンドを再実行できない場合にadbidxrebuildコマンドを実行すると,adbidxrebuildコマンドがインデクス作成処理を引き継ぎます。※
-
作業用一時ファイルが存在しない場合(adbimportコマンドの再実行時にKFAA50247-Eメッセージが出力された場合)
adbimportコマンドが中断した状態で作業用一時ファイルを削除してしまうと,adbimportコマンドが再実行できなくなります。この場合,--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行すると,adbimportコマンドからインデクス作成処理を引き継ぎます。
-
コマンドステータスファイル($DBDIR/ADBSYS/ADBUTLディレクトリ下のファイル)が存在しない場合(adbimportコマンドの再実行時にKFAA50244-Eメッセージが出力された場合)
adbimportコマンドが中断した状態でコマンドステータスファイルを削除してしまうと,adbimportコマンドが再実行できなくなります。この場合,--forceオプションを指定してadbidxrebuildコマンドを実行すると,adbimportコマンドからインデクス作成処理を引き継ぎます。
-
adbimportコマンドが中断した状態でインデクスを定義し,インポート対象表に未完状態のインデクスが作成された場合(adbimportコマンドの再実行時にKFAA50209-Eメッセージが出力された場合)
adbimportコマンドが中断した状態でインデクスを定義すると,adbimportコマンドを再実行できなくなることがあります。この場合,--forceオプションを指定してadbidxrebuildコマンドを実行すると,adbimportコマンドからインデクス作成処理を引き継ぎます。
- 注※
-
adbidxrebuildコマンドの実行前に処理対象表のインデクスをDROP INDEX文で削除した場合,削除したインデクスは再作成されません。また,adbidxrebuildコマンドの実行前に作成対象のインデクスをすべて削除した場合,コマンドの終了処理だけが実行されます。
adbidxrebuildコマンドに指定するオプションによって,adbidxrebuildコマンドの処理が異なります。
- ■--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行する場合
-
--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行すると,adbidxrebuildコマンドの処理は,作業用一時ファイルを作成する表データの検索処理から開始されます。
図16‒7 adbimportコマンドからのインデクス作成処理の引き継ぎ(--create-temp-fileオプションを指定する場合) なお,処理対象表がマルチチャンク表の場合,adbimportコマンドが中断したときに処理中だったチャンクが,adbidxrebuildコマンドの処理対象となります。adbidxrebuildコマンドが正常終了するまで,対象となるチャンクは変更されません。
- ■--forceオプションを指定してadbidxrebuildコマンドを実行する場合
-
--forceオプションを指定してadbidxrebuildコマンドを実行すると,adbidxrebuildコマンドがインデクス再作成処理の初めから開始されます。
図16‒8 adbimportコマンドからのインデクス作成処理の引き継ぎ(--forceオプションを指定する場合)