oracle 誤刪除的處理方法

wadekobe9發表於2012-02-02
       這裡簡單的描述一下to_timestamp的用法,在測試庫上面,經常會有開發人員誤刪除或修改一些資料,並且已經提交。方法如下:

SQL> select * from emp;
 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7369 SMITH      CLERK      7902 1980/12/17     800.00               20
 7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
 7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
 7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
 7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
 7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
 9999 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
 7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
 7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
 7934 MILLER     CLERK      7782 1982/1/23     1300.00               10
 
13 rows selected

---在2點20分進行了如下誤操作
Delete From emp Where deptno=20;
commit;

現在如何找回已經被刪除的deptno=20的資料呢?
只需進行如下操作,時間點是在2點20分以前就可以了
select * from  emp as of timestamp to_timestamp('2012-02-02 14:13:05','YYYY-MM-DD HH24:MI:SS')

將查詢出來的資料直接insert回去,如果是update的出的問題,就將現有出問題的行刪除再insert回去,
正式庫上面的閃回肯定是關掉的,用次方法能夠較為簡單快捷的恢復,當然它也它的侷限性,這裡是
直接查詢undo表空間中記錄的前映象,如果前映象沒有了,此方法就不適用了

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10678398/viewspace-715517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章