15.10.1 テキストインデクスが未完状態になったときの対処方法
行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義すると,テキストインデクスが未完状態(テキストインデクスのデータが作成されていない状態)になります。行を格納するセグメントが割り当てられている状態については,「5.4.3 テキストインデクスを定義する場合の注意点(テキストインデクスの未完状態)」を参照してください。
テキストインデクスが未完状態になると,次に示す操作がエラーになります。
- ■エラーになる操作
-
-
未完状態のテキストインデクスを使用するSELECT文の実行
-
未完状態のテキストインデクスが定義された表に対するINSERT文,UPDATE文,およびDELETE文の実行
-
未完状態のテキストインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行
-
未完状態のテキストインデクスが定義された実表に対するadbmergechunkコマンドの実行
-
未完状態のテキストインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行
- メモ
-
TRUNCATE TABLE文は実行できます。TRUNCATE TABLE文で実表の全行を削除した場合,テキストインデクスのデータも削除されるため,テキストインデクスの未完状態も解除されます。
-
テキストインデクスが未完状態になる原因には,次に示す場合があります。
-
行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合
-
adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合
テキストインデクスが未完状態になった原因によって,未完状態の解除方法が異なります。
- 〈この項の構成〉
(1) 行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合
-
テキストインデクスが未完状態かどうかを確認する
テキストインデクスが未完状態かどうかは,adbdbstatusコマンドで確認できます。「10.9.4 テキストインデクスの状態や使用量を確認したい場合」を参照してください。
テキストインデクスが未完状態の場合は,手順2.に進んでください。
-
テキストインデクスの未完状態を解除する
未完状態のテキストインデクスが定義されている実表に対して,adbidxrebuildコマンドを実行してください。
adbidxrebuildコマンドを実行して,テキストインデクスを再作成することで,テキストインデクスの未完状態が解除されます。
なお,adbimportコマンドが異常終了した状態でCREATE INDEX文を実行した場合,テキストインデクスが未完状態になることがあります。この場合,--forceオプションを指定してadbidxrebuildコマンドを実行してください。--forceオプションを指定しないでadbidxrebuildコマンドを実行すると,エラーとなります。
adbidxrebuildコマンドについては,マニュアルHADB コマンドリファレンスのadbidxrebuild(インデクスの再作成)を参照してください。
(2) adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合
-
テキストインデクスが未完状態かどうかを確認する
テキストインデクスが未完状態かどうかは,adbdbstatusコマンドで確認できます。「10.9.4 テキストインデクスの状態や使用量を確認したい場合」を参照してください。
テキストインデクスが未完状態の場合は,手順2.に進んでください。
-
テキストインデクスの未完状態を解除する
未完状態のテキストインデクスが定義されている実表に対して,異常終了したコマンド(adbimportコマンドまたはadbidxrebuildコマンド)を再実行してください。
再実行したコマンドが正常終了したときに,テキストインデクスの未完状態が解除されます。