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操作:
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后的恢复;
一、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;select dbms_flashback.get_system_change_number from dual;--查询出来的scn是:13326357405847
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 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/