(1) 模拟用户误操作
SQL> conn scott/tiger@demo
已连接。
SQL> host date
当前日期: 2009-02-19 星期四
输入新日期: (年月日)
SQL> host time
当前时间: 16:40:43.29
输入新时间:
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1975467
SQL> delete from emp where deptno=30;
已删除6行。
SQL> commit;
提交完成。
(2) 使用 FlashBack 查询取得早期时间点表行数据
SQL> select ename,sal,job,deptno from emp as of timestamp
2 to_timestamp('2009-02-19 14:40:43','YYYY-MM-DD HH24:MI:SS')
3 where deptno=30;
ENAME SAL JOB DEPTNO
---------- ---------- --------- ----------
ALLEN 1600 SALESMAN 30
WARD 1250 SALESMAN 30
MARTIN 1250 SALESMAN 30
BLAKE 2850 MANAGER 30
TURNER 1500 SALESMAN 30
JAMES 950 CLERK 30
已选择6行。
SQL> select ename,sal,job,deptno from emp as of scn 1975467 where deptno=30;
ENAME SAL JOB DEPTNO
---------- ---------- --------- ----------
ALLEN 1600 SALESMAN 30
WARD 1250 SALESMAN 30
MARTIN 1250 SALESMAN 30
BLAKE 2850 MANAGER 30
TURNER 1500 SALESMAN 30
JAMES 950 CLERK 30
已选择6行。
(3) 使用 FlashBack 查询恢复表行数据
SQL> insert into emp select * from emp as of scn 1975467 where deptno=30;
已创建6行。
SQL> commit;
提交完成。
本文通过实例演示了如何利用Oracle的闪回特性查询和恢复被误删除的数据。包括获取当前SCN、闪回查询特定时间点的数据、以及完全恢复误删记录的具体步骤。
1331

被折叠的 条评论
为什么被折叠?



