oracle 10g闪回总结

1.flashback query (undo)  
select current_scn from v$database;
select * from t as of scn scn号;    
时间与scn转换函数:
scn_to_timestamp()
to_timestamp()
timestamp_to_scn()

2.flashback table(undo)
select row_movement from dba_tables where table_name='T' and owner='TEST';
alter table t enable row movement;
flashback table t  to scn scn号;

3.flashback versions query(undo)
select * from t versions between scn minvalue and maxvlaue
order by versions_startscn;

4.flashback transaction query(undo)
select * from flashback_transaction_query where xid='事务id';
事务id对应到flashback versions query中的versions_xid,这样可以找到undo_sql,对误操作撤消。

5.flashback drop
drop table t;
show recyclebin
select * from dba_recyclebin;
flashback table t to before drop;
select * from dba_indexes where table_name='T';
如果有索引,索引同样会被闪回,但是索引名称会发生变化,使用
alter index old_index_name rename to new_index_name;更改索引名称。
t表上的触发器也同样如些。

彻底删除表
drop table t purge;
清回收站
purge recyclebin; 

是否启用recyclebin
show parameter recyclebin;

6.flashback database (flashback log)(生产环境下一般很少开启)
前提条件:
归档模式
使用闪回恢复区(设置db_recovery_file_dest参数),存放flashback log.
mount下,
select flashback_on from v$database;
alter system set db_recovery_file_dest='';
alter database flashback on;
select flashback_on from v$database;
alter database open;

select * from v$flashback_database_stat;
select * from v$flashback_database_log;--查看数据库能够闪回到的最早scn或时间点和其它信息
select * from v$flashback_database_logfile;--显示闪回日志文件

查看后台进程
select * from v$bgprocess where paddr<>'00';显示RVWR后台进程启动

恢复例子:
mount状态下,闪回数据库到某一时间点(比如误删除用户级用户下的对象)
flashback database to scn scn号;
--以只读方式打开数据库,查看用户是否恢复成功
alter database open read only
--然后以resetlogs打开
shutdown immediate
startup mount
alter database open resetlogs;

设置闪回保留
show parameter db_flashback_retention_target