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 进行表数据恢复(转)

Oracle 表数据恢复

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

概念: You perform a Flashback Query by using a SELECT statementwith an AS OF clause.You use a flashba...

oracle 锁表与解锁、数据恢复

锁表与解锁 SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK...

oracle表数据恢复

  • 2013年04月11日 17:38
  • 149B
  • 下载

Oracle数据恢复:SYSTEM表空间的重要性

« AskTom ACOUG China - 2012 Events ShangHai |Blog首页| Oracle数据恢复:异常中断的操作都很危险 » Oracle数据恢复:SYSTEM表...
  • haiross
  • haiross
  • 2014年07月14日 10:15
  • 908

ORACLE数据恢复方法(提交事务也可以)

今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中。这时,你可以rollback事务,撤销所有未提交的修改。不过,...
  • jiajane
  • jiajane
  • 2015年10月20日 17:36
  • 284

Oracle Study之案例--数据恢复神器Flashback(1)

Oracle Study之案例--数据恢复神器Flashback(1)Flashback:            Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UN...
  • lqx0405
  • lqx0405
  • 2015年03月31日 12:11
  • 431

Oracle 11G Rman备份ASM数据恢复到本地磁盘

在日常工作中,我们经常会遇到需要将使用ASM存储的数据迁移到本地磁盘中,迁移之后的数据库可用于测试等用途。可以选择的工具很多,exp/imp、 expdp/impdp、rman,前两种方法因为比较适合...

Oracle 10g 数据恢复(闪回FLAHBACK)

1、闪回数据库 Flashbackdatabase(根据误操作时间闪回数据) ·DB_RECOVER_FILE_DEST ·DB_RECOVER_FILE_DEST_SIZE 这两个参数来确...

Oracle Logminer 做数据恢复 说明示例

        在IBM DBA 小荷的blog上看到一个用Logminer 做数据恢复的例子。 虽然对Logminer 也了解一点,但是用Logminer 做恢复还真没用过,所以也测试一下。 原文链...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle表数据恢复2
举报原因:
原因补充:

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