11.4.21 アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法
アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更するには,ALTER TABLE文を実行します。
- 重要
-
アーカイブマルチチャンク表にアーカイブ状態のチャンクが存在する場合は,レギュラーマルチチャンク表に変更できません。チャンクのアーカイブ状態を解除する必要があります。
なお,「アーカイブ状態で,かつ削除仕掛中のチャンク」が存在する場合は,adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除できません。PURGE CHUNK文で,対象のチャンクを削除する必要があります。
手順
-
無効化されるビュー表の有無を確認する
アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更すると,処理対象表に依存するビュー表は無効化されます。そのため,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する前に,無効化されるビュー表があるかどうかを確認してください。無効化されるビュー表(依存するビュー表)を調べる場合は,「11.2.11 依存するビュー表を確認する方法」を参照してください。
もし,無効化されるビュー表がある場合は,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更したあとで,ビュー表の無効化を解除する必要があります。
-
「アーカイブ状態のチャンク」と「アーカイブ状態で,かつ削除仕掛中のチャンク」の有無を確認する
adbdbstatusコマンドで,アーカイブマルチチャンク表の「表のサマリ情報」を出力してください。そして,次の項目を確認してください(最初に,Archive_chunksを確認してください)。
-
Archive_chunks(アーカイブ状態のチャンク数)
Archive_chunksの値が0の場合は,手順3.に進んでください。1以上の場合は,アーカイブ状態のチャンクが存在します。adbunarchivechunkコマンドを実行して,全チャンクのアーカイブ状態を解除してください。
その後,adbdbstatusコマンドを再度実行し,Archive_chunksの値が0になっていることを確認してください。0にならない場合は,次に示すPending_delete_chunksを確認してください。
-
Pending_delete_chunks(表の削除仕掛中のチャンク数)
Pending_delete_chunksの値が1以上で,かつArchive_chunksの値も1以上の場合,「アーカイブ状態で,かつ削除仕掛中のチャンク」が存在します。この場合,PURGE CHUNK文を実行して,「アーカイブ状態で,かつ削除仕掛中のチャンク」をすべて削除してください。
「アーカイブ状態のチャンク」や「アーカイブ状態で,かつ削除仕掛中のチャンク」が存在していると,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更できません。
- メモ
-
-
adbdbstatusコマンドについては,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)を参照してください。
-
adbunarchivechunkコマンドについては,マニュアルHADB コマンドリファレンスのadbunarchivechunk(チャンクのアンアーカイブ)を参照してください。
-
PURGE CHUNK文については,マニュアルHADB SQLリファレンスのPURGE CHUNK(チャンク内の全行削除)を参照してください。
-
-
-
アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する
ALTER TABLE文で,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更してください。
- メモ
-
ALTER TABLE文は,マニュアルHADB SQLリファレンスのALTER TABLE(表定義の変更)を参照してください。
-
ビュー表の無効化を解除する
処理対象表に依存するビュー表がある場合は,ビュー表の無効化を解除してください。ビュー表の無効化を解除する場合は,「11.2.8 ビュー表の無効化を解除する方法」の「(1) ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合」を参照してください。
これで,アーカイブマルチチャンク表から,レギュラーマルチチャンク表への変更が完了します。
なお,アーカイブマルチチャンク表のアーカイブレンジ列に自動的に定義されたレンジインデクスは,レギュラーマルチチャンク表に変更しても削除されません。レンジインデクスが不要な場合は,DROP INDEX文で削除してください。レンジインデクスを削除する場合は,「11.3.9 インデクスの削除」を参照してください。
- 重要
-
adbunarchivechunkコマンドが中断している状態のときに,ALTER TABLE文を実行しないでください。もし,ALTER TABLE文を実行してしまった場合は,レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻す必要があります。その後,adbunarchivechunkコマンドが中断した状態を解除する必要があります。手順を次に示します。
-
ALTER TABLE文で,レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻してください。
-
手順1.で元に戻したアーカイブマルチチャンク表に対して,--forceオプションを指定したadbunarchivechunkコマンドを実行してください。adbunarchivechunkコマンドが中断した状態を解除できます。もし,KFAA50284-Eメッセージが出力されてadbunarchivechunkコマンドがエラーになった場合でも,adbunarchivechunkコマンドが中断した状態は解除されます。
-
手順1.で元に戻したアーカイブマルチチャンク表を,ALTER TABLE文でレギュラーマルチチャンク表に変更してください。
-