oracle表数据恢复2

转载 2012年03月31日 13:05:04

1.表查询闪回
create table xcp as (select * from b_za_bzdzkxx);
select * from xcp;
select count(1) from xcp;--22001
select count(1) from xcp t where t.dzbh like '510521%';--7011
delete from xcp t where t.dzbh like '510521%';
select count(1) from xcp;--14990
--查找指定时间点前的数据
select count(1) from xcp as of timestamp to_timestamp('2011-12-23 10:49:30','yyyy-MM-dd hh24:mi:ss');--22001

select * from xcp for update;--添加一条记录
select count(1) from xcp;--14991

--恢复指定时间点的前delete数据(将删除恢复时间点后面的数据)
alter table xcp enable row movement;--启动的行移动功能
flashback table xcp to timestamp to_timestamp('2011-12-23 10:49:30,'yyyy-MM-dd hh24:mi:ss');
select count(1) from xcp;--22001

--恢复指定时间点的前delete数据,并保留恢复时间点后面的数据
create table xcp2 as (select * from xcp t where t.createdtime>to_timestamp('2011-12-23 10:49:30','yyyy-MM-dd hh24:mi:ss'));
select * from xcp2;--临时表
alter table xcp enable row movement;--启动的行移动功能
flashback table xcp to timestamp to_timestamp('2011-12-23 10:49:30,'yyyy-MM-dd hh24:mi:ss');
select count(1) from xcp;--22001
insert into xcp select * from xcp2 --将临时表的数据再插入到源表
select count(1) from xcp;--22002


2.删除闪回[10g+]
    删除闪回为删除oracle 10G提供了一个数据库安全机制,当用户删除一个表时,oracle 10G会将该表放到回收站中,回收站中的对象一直会保留,直到用户决定永久删除它们或出现表空间的空间不足时才会被删除。回收站是一个虚拟容器,用于存储所有被删除的对象。数据字典user_tables中的列dropped表示被删除的表,查询方法如下:
select table_name,dropped from user_tables;
--设置数据库是否启用回收站
alert session set recyclebin = off;
--查询回收站对象

select * from recyclebin;
select * from user_recyclebin;
select * from dba_recyclebin;

 

drop table xcp;
select count(1) from xcp;--0
--恢复drop的表
flashback table xcp to before drop;
select count(1) from xcp;--22001

如果不知道原表名,可以直接使用回收站中的名称进行闪回..

flashback table "BIN$JiXyAUO4R+u3qNVfQK/Kiw==$0" to before drop;
在回收的同时可以修改表名

flashback table "BIN$JiXyAUO4R+u3qNVfQK/Kiw==$0" to before drop rename to xcp1;


--真正删除一个表,而不进入回收站,可以在删除表时增加purge选项
drop table xcp1 purge;
--也可以从回收站永久性删除表
purge table xcp1;
--删除当前用户回收站
purge recyclebin
--删除全体用户在回收站的资源
purge dba_resyclebin

 

3.数据库闪口[10g+]
    使用数据库闪回功能,可以使数据库回到过去某一状态,语法如下:
        sql: alter database flashback on;
        sql: flashback database to scn 46963;
        sql: flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-MM-dd hh24:mi:ss');

 

oracle数据库误删的表以及表中记录的恢复

一、表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有: 1、从flash back里查询被删除的表 sel...
  • jiyang_1
  • jiyang_1
  • 2016年08月11日 08:57
  • 5667

oracle数据update后怎么恢复到以前的数据

为了方便大家自己的解决办法: 1、select * from V$SQL where SQL_TEXT like '%update MAP_OPTCBL_POINT_70 set shape%'...
  • ITdada
  • ITdada
  • 2016年10月06日 23:39
  • 2711

Oracle 数据库误truncate table恢复过程

北京某国企客户 Oracle 11g R2 数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,此时发现数据库的备份不能用,表数据无法查询。 ...
  • beiya123
  • beiya123
  • 2017年01月06日 14:42
  • 2615

ORACLE修改列的数据类型的2种方法

对字段操作 操作方法 更新字段名 alter table TABLE_NAME rename column column_old to column_new; ...
  • qinyu100
  • qinyu100
  • 2013年10月19日 12:18
  • 484

Oracle数据库误删表,怎样恢复表结构和表数据

误删Oracle数据库表,恢复表结构及数据 必要条件:Oracle版本必须在10G以上 操作如下: 1.先找到原有表还在数据库的时间 select timestamp_to_scn(to_ti...
  • u010931123
  • u010931123
  • 2017年02月22日 12:31
  • 1603

ORACLE将表中的数据恢复到某一个时间点

执行如下SQL将test_temp表中的数据恢复到 2011 04 29  11:06:00  注意,这里一定要先删除全部数据,否则可能会导致数据重复 delete from test_temp;...
  • BareBear
  • BareBear
  • 2014年04月03日 16:06
  • 3499

ORACLE数据库误操作执行了DELETE,该如何恢复数据?

作为一个程序员,数据库操作是必须的,但是如果操作失误,一般都会造成比较严重的后果。 今天一不小心,干了一件揪心的事情,将正在使用的组织机构误操作执行了delete,顿时大脑有点缺氧,感觉蒙圈了(相信...
  • qq_35052774
  • qq_35052774
  • 2016年08月11日 17:23
  • 8883

Oracle表数据误删恢复

记录了一次恢复Oracle数据库(11g)中误删除的表数据的过程。
  • pierre_
  • pierre_
  • 2015年06月25日 20:44
  • 436

Oracle表数据恢复

有时候我们操作数据库时可能因为误操作把某张表更新或删除并且提交了。 这时候可以执行以下SQL以回复数据到某一个时间点: alter table 表名 enable row movement; flas...
  • zy332719794
  • zy332719794
  • 2016年09月29日 15:18
  • 189

ORACLE表数据恢复

1. //恢复的时间点 exec dbms_flashback.enable_at_time(to_date('2012-07-02 20:15:00','yyyy-mm-dd hh24:...
  • siy020513
  • siy020513
  • 2012年07月02日 20:24
  • 476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle表数据恢复2
举报原因:
原因补充:

(最多只允许输入30个字)