在oracle中,数据已被删除,并commit,如何恢复数据

时间:2022-03-29 06:26:18
在oracle中,把数据删除并commit,如何恢复数据。更悲剧的是数据没有备份。。。

8 个解决方案

#1


如果你打开了闪回区,可以通过闪回区回复,如果没有打开闪回区又没有备份,那就没办法了

#2


嗯,用表闪回!

#3


-- 操作示例如下:

11:19:23 SYSTEM@tdwora > conn scott/bee56915
已连接。
11:19:29 SCOTT@tdwora > select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

已选择12行。

已用时间:  00: 00: 00.06
11:19:38 SCOTT@tdwora > delete from emp where empno>7800;

已删除4行。

已用时间:  00: 00: 00.01
11:19:46 SCOTT@tdwora > commit;

提交完成。

已用时间:  00: 00: 00.00
11:19:48 SCOTT@tdwora > insert into emp
11:21:38   2  select * from emp as of timestamp TO_TIMESTAMP('2012-06-06 11:19:29','YYYY-MM-DD HH24:MI:SS')
11:21:38   3  WHERE empno not in (select empno from emp);

已创建4行。

已用时间:  00: 00: 00.03
11:21:42 SCOTT@tdwora > commit;

提交完成。

已用时间:  00: 00: 00.00
11:21:46 SCOTT@tdwora > select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

已选择12行。

已用时间:  00: 00: 00.04
11:21:51 SCOTT@tdwora >

#4


用閃回阿

#5


1、通过闪回功能恢复

2、如果数据库有归档日志文件 可根据日志文件恢复

#6


回滚,归档日志

#7


5楼的应该可以,5楼的,能给点详细步骤吗,

#8


select * from tab as to timestamp to_date('','');

不过需要你的undo表空间里面的内容还没有被覆盖。

#1


如果你打开了闪回区,可以通过闪回区回复,如果没有打开闪回区又没有备份,那就没办法了

#2


嗯,用表闪回!

#3


-- 操作示例如下:

11:19:23 SYSTEM@tdwora > conn scott/bee56915
已连接。
11:19:29 SCOTT@tdwora > select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

已选择12行。

已用时间:  00: 00: 00.06
11:19:38 SCOTT@tdwora > delete from emp where empno>7800;

已删除4行。

已用时间:  00: 00: 00.01
11:19:46 SCOTT@tdwora > commit;

提交完成。

已用时间:  00: 00: 00.00
11:19:48 SCOTT@tdwora > insert into emp
11:21:38   2  select * from emp as of timestamp TO_TIMESTAMP('2012-06-06 11:19:29','YYYY-MM-DD HH24:MI:SS')
11:21:38   3  WHERE empno not in (select empno from emp);

已创建4行。

已用时间:  00: 00: 00.03
11:21:42 SCOTT@tdwora > commit;

提交完成。

已用时间:  00: 00: 00.00
11:21:46 SCOTT@tdwora > select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

已选择12行。

已用时间:  00: 00: 00.04
11:21:51 SCOTT@tdwora >

#4


用閃回阿

#5


1、通过闪回功能恢复

2、如果数据库有归档日志文件 可根据日志文件恢复

#6


回滚,归档日志

#7


5楼的应该可以,5楼的,能给点详细步骤吗,

#8


select * from tab as to timestamp to_date('','');

不过需要你的undo表空间里面的内容还没有被覆盖。