数据库闪回操作

flash_tabl 为构建的表;


一、FLASH QUERY查询过去的数据(与undo表空间有关系)
基于时间点的查询(as of timestamp)
select * from flash_tabl as of timestamp sysdate - 4/1440;

基于scn号的查询(as of scn)
select  dbms_flashback.get_system_change_number from dual;--查询出来的scn是:13326357405847
delete from flash_tabl where id<10;
select * from flash_tabl as of scn 13326357406566;

使用dbms_flashback 包括实现FLASH QUERY
select  dbms_flashback.get_system_change_number from dual;--查询出来的scn是:13326357406566
delete from flash_tabl where id<10;
exec dbms_flashback.enable_at_system_change_number(13326357406566)
select * from flash_tabl

FLASH QUERY查询操作的事务(与undo表空间有关系)
select  dbms_flashback.get_system_change_number from dual;--查询出来的scn是:13326357405847
DML操作:
update flash_tabl set id=id+100 where id>15;
commit;
delete from flash_tabl where id<5;
commit;
insert into flash_tabl values (201,'A1');
insert into flash_tabl values (201,'B1');
commit;
select  dbms_flashback.get_system_change_number from dual;--查询出来的scn是:13326357405847

select id,
       vl,
       versions_startscn,
       versions_endscn,
       versions_operation,
       versions_xid
  from flash_tabl versions between scn 13326357411082 and 13326357411126;
  


--下面这个查询与logMiner非常像,该视图存储的记录量非常大,使用需注意  
select 
      q.xid,
      q.commit_scn,
      q.commit_timestamp,
      q.operation,
      q.undo_sql 
      from flashback_transaction_query q where q.xid 
      in 
      (select versions_xid from flash_tabl versions between scn 13326357411082 and 13326357411126)
      
此处过于UNDO表空间的知识;
初始化参数undo_retention是数据在回滚段表空间保存的时间,默认是900秒,这是一个动态的数字,只能作为参考。因为undo表空间是循环利用的,
如果undo表空间过小,那么数据保存在undo表空间的时间不会超过900秒,如果undo表空间很大,数据保存在undo表空间的时间会超过900秒,甚至很
长。undo表空间还有一个参数是undo guarantee,如果此参数为ture,那么数据在900秒之内,不会被覆盖重写,在undo表空间的自动管理下,undo表空
会自动扩展。
DDL操作(drop/modify,move,create,truncate)等操作,会让undo表空间中的撤销数据失效。

二、Flashback table

1、从recycle bin(回收站)中恢复
show parameter recyclebin;--查看回收站功能是否开启;

session级别的。alter session set recyclebin=on;
system级别的。alter system set recyclebin=on;
alter session set recyclebin=on;

a)
create table flash_drop as select * from dba_users;
drop table flash_drop;
select object_name,original_name from recyclebin;
flashback table flash_drop to before drop;
--这时表已经恢复,还需要注意的是该表的索引,约束的名字要重新命名;

b)
如果从回收站中恢复,已经存在相同的表名,可以在恢复的时候选择rename to
flashback table flash_drop to before drop rename to flash_drop_old;

c)
该表多次删除,从回收站中恢复
flashback table recyclebin.object_name to before drop;

2、从undo表空间中恢复表(使用前,要设置表可以row movement);
flashback table flash_tabl to scn 13326357411082;
注意事项:
(1)表必须要row movement,alter table flash_tabl enable row movement;
(2)注意DDl的的影响;
(3)基于undo的恢复,实际上还是基于DML操作的恢复;
(4)基于undo的恢复,索引会自动维护,但是统计信息不会恢复到指定的时间点;
(5)undo不支持聚簇表、物化视图、高级队列表、系统表、远程表、对象表、嵌套表、表分区或者子分区;

三、Flashback database 闪回数据库操作
该操作与闪回日志有关,闪回日志区设置的越大,恢复能力越强;一般开启此功能对性能会有影响;
select flashback_on from v$database;
开启force logging;否则有些操作无法恢复;
制约因素
a)此恢复不是介质恢复,所以不能恢复被删除的数据文件等;
b)控制文件被重建,之前产生的flashback log统统失效;
c)不支持数据库执行shrink后的恢复;








      













来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27057145/viewspace-1985526/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27057145/viewspace-1985526/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值