用法示例:
(1) 找出删除前的数据:
SELECT ename, sal FROM emp AS OF TIMESTAMP (SYSTIMESTAMP – INTERVAL ‘6’ MINUTE)WHERE ename = ‘ALLEN’;
SELECT ename, sal FROM emp AS OF SCN 3297508 where ename=’MILLER’
(2) 把表中的数据加回来:
insert into t1 (select * from t1 as of timestamp(systimestamp – interval ‘15’ minute)) ;(3) 如果表中一个数据被错误修改:
update empset sal = (
SELECT sal FROM emp
AS OF TIMESTAMP (SYSTIMESTAMP – INTERVAL ‘15’ MINUTE) where ename=’ALLEN’)
where ename=’ALLEN’;
(4) recovery accidental delete from table 恢复全表:
DECLARE
CURSOR FLASH_RECOVER ISselect * from emp_recover; emp_recover_rec emp_recover%ROWTYPE;
begin execute dbms_flashback.enable_at_time(to_date(‘2005-12-07 9:00:00’,’YYYY-MM-DD HH24:MI:SS’)) ; open FLASH_RECOVER; DBMS_FLASHBACK.DISABLE; loop FETCH FLASH_RECOVER INTO emp_recover_rec; EXIT WHEN FLASH_RECOVER%NOTFOUND; insert into emp_recover values (emp_recover_rec.empno, emp_recover_rec.ename, emp_recover_rec.job, emp_recover_rec.mgr, emp_recover_rec.hiredate, emp_recover_rec.sal, emp_recover_rec.comm, emp_recover_rec.deptno); end loop; CLOSE FLASH_RECOVER; commit;
Exception when others then DBMS_FLASHBACK.DISABLE; CLOSE FLASH_RECOVER; rollback;
end;
局限性:
(1) Oracle每5分钟做一个恢复点, 虽然你指定要恢复到8:00时的数据, Oracle可能回恢复到7:56或者8:04时的数据.
6 Comments to “用FlashBack query恢复误删数据”
Write a comment
You need tologin.

hello! http://www.dirare.com/Sweden/ online directory. SMART Yellow Pages, About DIRare, Search in Business Category. From online directory .
khiuemfvr fqsvulych yesguhliz bcln gujwpr kfdli kvntpr
nfluwkpzm fjhbgp cxkf ecjny vdqutzn lnhockyi smuq bdhi rxpbqyimh
Very good site. Thanks!
acorn slipper sock
Nice site. Thank you:-)
acorn-slipper-sock.rusdoor.com acorn slipper sock
好东东!
以后多来学习学习!