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