行级闪回
1、时间点闪回
①查询表的操作记录,找到对应行。
select versions_starttime,versions_endtime,versions_xid, versions_operation ,ename from test.test versions between timestamp minvalue and maxvalue;
②执行undo_sql 中的sql ,完成闪回操作
select * from flashback_transaction_query where xid='080008004D3B0000';
2、scn闪回
①查询表的操作记录,找到对应行。
select versions_startscn,versions_endscn,versions_xid ,versions_operation from test.test versions between timestamp minvalue and maxvalue;
或者
select versions_startscn,versions_endscn, versions_xid,versions_operation from test.test versions between scn 27337166 and 27337174;
②执行undo_sql 中的sql ,完成闪回操作
select * from flashback_transaction_query where xid='080008004D3B0000';
注意:对表数据更新一段时间后,用户只有在初始化参数undo_retention设置的时间内才能查询到表的更改记录。而且,只有初始化参数undo_management设置为auto后用户才能使用闪回查询。
表闪回
①找到被删除的表
select * from tab;
show recyclebin
②恢复被删除的表
flashback table 表名字 to before drop;
③清空回收站
purge 表名字
④彻底删除表
drop table table_name purge;
数据库闪回恢复
数据库必须处于archivelog模式
数据库必须启用数据库闪回功能
数据库必须配置初始化参数db_flashback_retention_target
1、闪回的语法
flashback [standby] databse 数据库名 to [SCN scn号/timestamp 时间表达式/restore point 恢复点]
standby:如果要将备用数据库闪回到某个时间点或某个scn号,设置这个子句。
to scn:将数据库恢复到某个scn号
to timestamp:将数据库恢复到某个时间点
to restore point:将数据库恢复到某个恢复点(restore point)
2、配置数据库闪回
shutdown immediate
startup mount
select name,log_mode,open_mode,flashback_on from v$database;
①闪回数据库到某个时间点
select to_char(oldest_flashback_time,'yyyy-mm-dd hh24:mi:ss') from v$flashback_database_log;
flashback database to timestamp to_date('2018-6-6 15:15:57'.'yyyy-mm-dd hh24:mi:ss');
alter databse open resetlogs;
②闪回数据库到某个scn
查找scn
select oldest_flashback_scn from v$flashback_database_log;
flashback databse to scn XXXXXXX;
alter databse open resetlogs;
欢迎关注“自学Oracle”
领取专属 10元无门槛券
私享最新 技术干货