概要
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 を使用します。無料でダウンロードして試用できます。