Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.4.21 アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更するには,ALTER TABLE文を実行します。

重要

アーカイブマルチチャンク表にアーカイブ状態のチャンクが存在する場合は,レギュラーマルチチャンク表に変更できません。チャンクのアーカイブ状態を解除する必要があります。

なお,「アーカイブ状態で,かつ削除仕掛中のチャンク」が存在する場合は,adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除できません。PURGE CHUNK文で,対象のチャンクを削除する必要があります。

手順

  1. 無効化されるビュー表の有無を確認する

    アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更すると,処理対象表に依存するビュー表は無効化されます。そのため,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する前に,無効化されるビュー表があるかどうかを確認してください。無効化されるビュー表(依存するビュー表)を調べる場合は,「11.2.11 依存するビュー表を確認する方法」を参照してください。

    もし,無効化されるビュー表がある場合は,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更したあとで,ビュー表の無効化を解除する必要があります。

  2. 「アーカイブ状態のチャンク」と「アーカイブ状態で,かつ削除仕掛中のチャンク」の有無を確認する

    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(チャンク内の全行削除)を参照してください。

  3. アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する

    ALTER TABLE文で,アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更してください。

    メモ

    ALTER TABLE文は,マニュアルHADB SQLリファレンスALTER TABLE(表定義の変更)を参照してください。

  4. ビュー表の無効化を解除する

    処理対象表に依存するビュー表がある場合は,ビュー表の無効化を解除してください。ビュー表の無効化を解除する場合は,「11.2.8 ビュー表の無効化を解除する方法」の「(1) ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合」を参照してください。

これで,アーカイブマルチチャンク表から,レギュラーマルチチャンク表への変更が完了します。

なお,アーカイブマルチチャンク表のアーカイブレンジ列に自動的に定義されたレンジインデクスは,レギュラーマルチチャンク表に変更しても削除されません。レンジインデクスが不要な場合は,DROP INDEX文で削除してください。レンジインデクスを削除する場合は,「11.3.9 インデクスの削除」を参照してください。

重要

adbunarchivechunkコマンドが中断している状態のときに,ALTER TABLE文を実行しないでください。もし,ALTER TABLE文を実行してしまった場合は,レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻す必要があります。その後,adbunarchivechunkコマンドが中断した状態を解除する必要があります。手順を次に示します。

  1. ALTER TABLE文で,レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻してください。

  2. 手順1.で元に戻したアーカイブマルチチャンク表に対して,--forceオプションを指定したadbunarchivechunkコマンドを実行してください。adbunarchivechunkコマンドが中断した状態を解除できます。もし,KFAA50284-Eメッセージが出力されてadbunarchivechunkコマンドがエラーになった場合でも,adbunarchivechunkコマンドが中断した状態は解除されます。

  3. 手順1.で元に戻したアーカイブマルチチャンク表を,ALTER TABLE文でレギュラーマルチチャンク表に変更してください。