闪回表,实际上是将表中的数据恢复到过去的一个焦点或者系统改变号SCN上,实现表的闪回。用户对表的修改操作都记录在撤销表空间中,这为表的闪回提供了恢复基础。
1参数
1首先查看UNDO参数信息,sys用户登录。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ----------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
如上参数,可以在900秒内对数据进行恢复。
可将时间设置大一些
SQL> alter system set undo_retention=1200 scope=both;
系统已更改。
2相应执行闪回的用户要有权限
SQL> grant flashback any table to ruiyuan;
授权成功。
2查看已经修改的数据
若数据被delete掉,可用以下语句查看版本信息
select empno,ename,sal from empsal
as of timestamp to_timestamp('2013-03-24 13:00:00', 'yyyy-mm-dd hh24:mi:ss');
3 DELETE闪回
1查看某一时间点SCN号
select '2013-03-26 11:30:00' 时间,
timestamp_to_scn(to_date('2013-03-26 11:30:00','yyyy-mm-dd hh24:mi:ss')) SCN
from dual;
也可使用以下方式查看当前SCN号
select dbms_flashback.get_system_change_number scn from dual;
2要对表进行闪回,首先对标开启行移动功能。开启行移动功能是为了应对rowid变化,是指可以从回滚段写数据。
alter table emp enable row movement;
对表进行闪回
flashback table emp to scn 2087054;
也可重新创建一个表插入原数据,适用于数据量较小,可以不用开启行移动
create table t as
select * from emp
as of timestamp to_timestamp('2013-03-26 13:50:00', 'yyyy-mm-dd hh24:mi:ss');
3关闭行移动功能
Alter table emp disable row movement;
4 DROP闪回
被drop的表闪回不需要row movement
1直接通过表名闪回
Flashback table empsal to before drop;
2通过回收站闪回
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
------------------------------ --------------------------------
SYS_LOB0000076510C00001$$ SYS_LOB0000076510C00001$$
BIN$gHyQWGdcRA+TjuR8pnh7KA==$0 DDD
BIN$W9E+vtRKTHitj4UWr80a1Q==$0 SYS_C0011515
BIN$YDEeZZtdTwShdEdSbr7NLw==$0 SYS_FK0000076410N00003$
BIN$O8tpFWQHTjuOgOJziOMV8w==$0 SAL_TABLE
BIN$McKRvF+vQcmDRxsu/2joQw==$0 EMPSAL
SYS_IL0000076510C00001$$ SYS_IL0000076510C00001$$
BIN$RCeb5Hq7QU6Mk3n52Y5QMg==$0 EMP
根据回收站object_name进行闪回
flashback table "BIN$RCeb5Hq7QU6Mk3n52Y5QMg==$0" to before drop;
也跟根据回收站的名查看原数据,不进行闪回,把就信息插入新表
select empno,ename,sal from "BIN$v+9Lau8zT4COjhMx4aUtsQ==$0"
as of timestamp to_timestamp('2013-03-24 13:00:00', 'yyyy-mm-dd hh24:mi:ss');
create t as
select empno,ename,sal from "BIN$v+9Lau8zT4COjhMx4aUtsQ==$0"
as of timestamp to_timestamp('2013-03-24 13:00:00', 'yyyy-mm-dd hh24:mi:ss');
3闪回重复的表
若前后删除两张名字相同的表,对表名进行闪回会恢复最后删除的表。若要闪回第一个删除的表,可在闪回时进行重命名
flashback table emp to before drop rename to emp1;
5查看数据修改的版本
select emp.* ,TO_CHAR(versions_starttime,'yyyy-mm-dd hh24:mi:ss') versions_starttime,
TO_CHAR(versions_endtime,'yyyy-mm-dd hh24:mi:ss')versions_endtime from emp
versions between timestamp timestamp'2013-03-26 13:40:00' and
timestamp'2013-03-26 13:58:00'
order by 6,5
其中 versions_starttime,versions_endtime分别表示修改行的版本时间,只有别修改的才有此时间。若行只有versions_endtime时间,则表示最初版本,若只有versions_starttime则表示最后版本。
6注意
闪回操作对下列数据无效
SYSTEM表空间内
用于精细审计的数据库或虚拟私人数据库
数据字典管理的表空间
由于空间不足已经被手动删除或自动删除的表
以下依赖不被保护
位图索引
表之前删掉的索引
表的统计数据不会被闪回
当前的索引和从属的对象会被维护
闪回操作
系统表不能被闪回
不能据跨越DDL操作
会被写入警告日志
会产生撤销和重做的信息
分享到:
相关推荐
oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回
oracle 闪回技术 数据恢复
详细描述Oracle闪回技术原理,并详细列举语法及实际使用方法。
文档中详细介绍oracle 闪回删除的表,供大家参考!一起进步
利用oracle闪回技术恢复数据,在因误操作导致删除数据时,可以进行数据恢复。
讲解oracle闪回数据库,采用闪回技术备份还原数据库
博文链接:https://dbajun.iteye.com/blog/222191
完整的描述了ORACLE闪回的整个过程,参数和配置开关以及部分注意事项.包含ORACLE中:闪回表、闪回删除、闪回数据库等操作。
为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复,Oracle 推出了闪回技术。 该技术首 先以闪回查询( Flashback Query)出现在 Oracle 9i 版本中,后来 Oracle 在 10g 中对该技术 进行了全面扩展,提供了闪回...
获取某一点的前的ORACLE数据,可以恢复误删数据
闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置 db_recovery_file_dist_size:指定闪回恢复区的可用空间大小 db_flashback_retention_target:指定数据库可以回退的时间...
闪回各种误删除操作:truncate、drop、delete。
ORACLE 闪回技术 对闪回有兴趣的可以看一看
DAVE Oracle 闪回 学习笔记
Oracle闪回技术详解,这里整理了4种闪回技术,对Oracle 闪回技术做一个整理总结。 概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复...
用Oracle闪回功能恢复偶然丢失的数据
Oracle 闪回技术详解。详细介绍了 Oracle 的 7 种闪回技术,并进行实验演示。可以轻松掌握闪回技术的使用。
oracle闪回命令
用Oracle闪回功能恢复偶然丢失的数据