TRUNCATE した表を復旧する方法 [Oracle 10g対応]

概要

TRUNCATEコマンドで削除されたテーブルデータを復旧する方法について、Oracle 10g環境での具体的な手順を解説します。TRUNCATEはDELETEとは異なり、ロールバックが困難な操作ですが、DBRECOVERを使用することで復旧が可能です。

TRUNCATEとDELETEの違い

  • DELETE: DMLコマンド、ロールバック可能、REDOログに記録
  • TRUNCATE: DDLコマンド、ロールバック不可、高速だが復旧困難

復旧手順

ステップ1: データファイルの特定

TRUNCATEされたテーブルが存在していたデータファイルを特定します。DBRECOVERでデータファイルをスキャンし、削除されたデータブロックを検出します。

ステップ2: DBRECOVERでスキャン

DBRECOVERを起動し、対象のデータファイルをロードします。TRUNCATEされた直後であれば、データブロックはまだ上書きされていない可能性が高いです。

ステップ3: データの抽出

検出されたデータをCSVまたはINSERT文として出力します。この出力を使用して、新しいテーブルにデータを復元できます。

注意事項

  • TRUNCATEの直後に復旧作業を行うほど、成功率が高くなります
  • データファイルへの書き込みを停止することで、復旧成功率が向上します
  • Oracle 10g以降のバージョンで動作確認済み

関連製品

この復旧作業には DBRECOVER For Oracle を使用します。無料でダウンロードして試用できます。