oracle誤削除データ復旧方法のまとめ

2775 ワード

ユーザーがデータを誤って削除/更新した後、ユーザーとしてリカバリする直接的な方法がない場合は、データベースのリカバリにDBAを求めなければなりません.Oracle 9 iになると、この状況は改善されます.Or(www.jb 51.net)acle 9 iでは、ユーザーがフラッシュバッククエリを使用して誤操作前のデータをタイムリーに取得し、エラーに対して対応するリカバリ措置を行うことができる新しい技術手段を提供しています.これらはDBAの介入を必要としません.
一時は手ごわいので、生産上のデータはdeleteに落とされました.
delete文を使って、すぐにcommitに返しました.
次の2つの文:
ALTER TABLE tablename ENABLE row movement ; flashback table tablename to timestamp to_timestamp('2012-09-13 13:00:00','yyyy-mm-dd hh24:mi:ss');
2時半ごろに運行していたdelete-commitを覚えています.
具体的な実行プロセスは以下のいくつかの例図から体得することができる.
1.原表記録

 $ sqlplus eygle/eygle
SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005
Copyright (c) 1982, 2004, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL>select count(*) from t1;
  COUNT(*)
----------
    9318

2.すべてのレコードを誤って削除し、変更をコミットします.

SQL>delete from t1;
9318 rows deleted.
SQL>commit;
Commit complete.
SQL>select count(*) from t1;
  COUNT(*)
----------
     0

3.現在のSCNを取得削除する前にSCNを正確に知ることができれば、知らない場合はフラッシュバッククエリの試行を行うことができる.

SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
         10671006
SQL>select count(*) from t1 as of scn 10671000;
  COUNT(*)
----------
     0
SQL>select count(*) from t1 as of scn 10670000;
  COUNT(*)
----------
    9318

SCN=1067000でデータが表示されます.
4.データを復元する.

SQL>insert into t1 select * from t1 as of scn 10670000;
9318 rows created.
SQL>commit;
Commit complete.
SQL>select count(*) from t1;
  COUNT(*)
----------
    9318

その他のネットユーザー用のチュートリアル
データベース操作を行い、deleteの後に必ずwhereを追加します.」今日、何気なくネット上でoracleの誤った削除データの回復に関する情報を見ましたが、確かに使いやすいことに気づきました.次に、私のテストについて報告します.

 1. select * from t_viradsl2 t     //  t_viradsl2      ,        
 2. delete t_viradsl2           //  t_viradsl2      ,      
 3. select * from t_viradsl2 t     //   。
 4. insert into t_viradsl2 select * from t_viradsl2 as of timestamp to_Date('2011-01-19 15:28:00', 'yyyy-mm-dd hh24:mi:ss')       //           
 5. select * from t_viradsl2 t     //        。

次の4つ目のステップを分析します.
select * from t_viradsl2 as of timestamp to_Date('2011-01-19 15:28:00','yyyy-mm-dd hh 24:mi:ss')、どういう意味ですか、t_を見つけましたviradsl 2は2011-01-19 15:28:00という時点のすべてのデータを見つけた以上、どのように操作してもいいです.
みんなに分かち合う