13.8.1 実表が更新不可状態になった場合
次に示すコマンドが中断した場合,表の情報とインデクスの情報との不整合が原因で,処理対象の実表が更新できない状態になることがあります。これを,実表の更新不可状態といいます。
- ■対象のコマンド
-
-
adbimportコマンド
-
adbidxrebuildコマンド
-
adbunarchivechunkコマンド
-
更新不可状態の実表に対して,次に示す操作を行うとエラーになります。
- ■エラーになる操作
-
-
DELETE文,INSERT文,UPDATE文およびPURGE CHUNK文の実行
-
定義系SQLの実行
-
adbmergechunkコマンドの実行
-
adbchgchunkstatusコマンドの実行
-
adbchgchunkcommentコマンドの実行
-
adbimportコマンドの実行※1
-
adbidxrebuildコマンドの実行※1
-
adbarchivechunkコマンドの実行
-
adbunarchivechunkコマンドの実行※2
- 注※1
-
adbunarchivechunkコマンドが中断して,実表が更新不可状態になった場合にエラーになります。adbimportコマンドまたはadbidxrebuildコマンドが中断して,実表が更新不可状態になった場合はエラーになりません。
- 注※2
-
adbimportコマンドまたはadbidxrebuildコマンドが中断して,実表が更新不可状態になった場合にエラーになります。adbunarchivechunkコマンドが中断して,実表が更新不可状態になった場合はエラーになりません。
- 参考
-
TRUNCATE TABLE文は実行できます。実表の行データはすべて削除されるため,実表の更新不可状態は解除されます。
-
(1) 実表の更新不可状態を解除する方法
実表の更新不可状態を解除する手順を次に示します。
手順
-
対象の実表が更新不可状態かどうかを確認する
実表の更新不可状態は,adbdbstatusコマンドで確認できます。「9.8.2 実表の状態や使用量を確認したい場合」を参照してください。
実表の更新不可状態の場合,手順2.に進んでください。
-
実表の更新不可状態を解除する
中断したコマンドを再実行してください。
-
adbimportコマンドが中断した場合
adbimportコマンドを再実行してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbimport(データのインポート)」の「adbimportコマンドが異常終了したときの対処方法(システムログを取得している場合)」,または「adbimportコマンドが異常終了したときの対処方法(システムログを取得していない場合)」を参照してください。
-
adbidxrebuildコマンドが中断した場合
adbidxrebuildコマンドを再実行してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbidxrebuild(インデクスの再作成)」の「adbidxrebuildコマンドが異常終了したときの対処方法(システムログを取得している場合)」,または「adbidxrebuildコマンドが異常終了したときの対処方法(システムログを取得していない場合)」を参照してください。
-
adbunarchivechunkコマンドが中断した場合
adbunarchivechunkコマンドを再実行してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbunarchivechunk(チャンクのアンアーカイブ)」の「adbunarchivechunkコマンドが異常終了したときの対処方法」を参照してください。
再実行したコマンドが正常終了すると,表の情報とインデクスの情報との不整合が解消されて,更新不可状態が解除されます。
コマンドの再実行時にエラーが発生した場合は,「13.8.1(2) コマンドの再実行時にエラーが発生したときの対処方法」を参照してください。
-
(2) コマンドの再実行時にエラーが発生したときの対処方法
コマンドの再実行時,中断したコマンドが作成した作業用一時ファイルまたはコマンドステータスファイルにアクセスできないことが原因で,エラーが発生する場合があります。エラーが発生した場合,次に示すメッセージがメッセージログファイルに出力されているかどうかを確認してください。
-
KFAA50244-Eメッセージ
-
KFAA50247-Eメッセージ
上記のメッセージが出力されているかどうかによって対処が異なります。上記以外のメッセージが出力されている場合は,出力されたメッセージに従って対処してください。対処が完了すると,実表の更新不可状態が解除されます。
-
KFAA50244-Eメッセージが出力されている場合
再実行できなかったコマンドによって,対処が異なります。
-
adbimportコマンドまたはadbidxrebuildコマンドの再実行がエラーになった場合
--forceオプションを指定して,adbidxrebuildコマンドを実行してください。
なお,中断したコマンドが,バックグラウンドインポートを適用した(-bオプションを指定した)adbimportコマンドのときは,adbidxrebuildコマンドに--forceオプションを指定して実行すると,adbimportコマンドで処理中だった表データの格納情報が削除されます。この場合は,adbidxrebuildコマンドを実行したあとに,-bオプションを指定して,中断したadbimportコマンドを再実行してください。
adbidxrebuildコマンドの--forceオプションについては,マニュアル「HADB コマンドリファレンス」の「adbidxrebuild(インデクスの再作成)」の「adbidxrebuildコマンドの指定形式」を参照してください。
-
adbunarchivechunkコマンドの再実行がエラーになった場合
--forceオプションを指定して,adbunarchivechunkコマンドを実行してください。
adbunarchivechunkコマンドの--forceオプションについては,マニュアル「HADB コマンドリファレンス」の「adbunarchivechunk(チャンクのアンアーカイブ)」の「adbunarchivechunkコマンドの指定形式」を参照してください。
-
-
KFAA50247-Eメッセージが出力されている場合
--create-temp-fileオプションを指定して,adbidxrebuildコマンドを実行してください。
adbidxrebuildコマンドの--create-temp-fileオプションについては,マニュアル「HADB コマンドリファレンス」の「adbidxrebuild(インデクスの再作成)」の「adbidxrebuildコマンドの指定形式」を参照してください。
(3) 更新不可状態の実表を検索した場合
更新不可状態の実表は,SELECT文で検索できます。ただし,中断したコマンドによって検索結果が異なります。
- ■adbimportコマンドの場合
-
adbimportコマンド実行時の-dオプションの指定有無によって,検索結果が異なります。
- -dオプションを指定しなかった場合
-
adbimportコマンド実行前の実表に対して検索した場合と同じ結果が返却されます。
- -dオプションを指定した場合
-
インデクスを使用しないSELECT文,およびレンジインデクスを使用したSELECT文の検索結果は,0件になります。
また,B-treeインデクスまたはテキストインデクスを使用したSELECT文は,エラーとなります。
- ■adbidxrebuildコマンドの場合
-
再作成が完了していないB-treeインデクス,テキストインデクスまたはレンジインデクスを使用したSELECT文を実行すると,インデクスの未完状態によって,エラーとなります。
- ■adbunarchivechunkコマンドの場合
-
adbunarchivechunkコマンド実行前の実表に対して検索した場合と同じ結果が返却されます。