Oracle flashback 闪回 笔记

来源:互联网 发布:windows找不到runtime 编辑:程序博客网 时间:2024/05/21 08:19

Oracle

Oracle的闪回技术提供了一组功能,可以访问过去某一时间的数据并从人为错误中恢复。闪回技术是Oracle
数据库独有的,支持任何级别的恢复,包括行、事务、表和数据库范围。使用闪回特性,您可以查询以前的数据版本,还可以执行更改分析和自助式修复,以便在保持数据库联机的同时从逻辑损坏中恢复。

闪回技术包括以下特性:

(1) 闪回查询(flashbackquery);闪回查询允许用户查询过去某个时间点的数据,以重新构建由于意外删除或更改而丢失的数据。

(3) 闪回事务查询(flashback transcation query);闪回事务查询提供了一种查看事务级数据库变化的方法。
(4) 闪回数据库(flashback database);闪回数据库是进行时间点恢复的新策略。它能够快速将Oracle 数据库恢复到以前的时间,正确更正由于逻辑数据损坏或用户错误而引起的任何问题。

(6) 闪回删除(flashback drop);闪回删除在删除对象时提供了一个安全网,您可以非常快速、轻松地取消对一个表及其相关对象对象的删除。


1、其中闪回查询、闪回版本查询、闪回事务查询属于行级闪回。这三种闪回技术全部依赖于undo表空间中的undo数据。
2、闪回表、闪回删除属于表级闪回。闪回表也是从undo中读取数据,闪回删除是依赖recyclebin
3、闪回数据库属于数据库级闪回。


oracle数据库闪回类型主要有三种:
(1) 闪回数据库(flashback database)
  闪回数据库就是当出现逻辑错误时,能够将整个数据库回退到出错前的那个状态。
(2) 闪回删除(flashback drop)
Oracle10g之前,一旦删除了一个表,那么该表就会从数据字典里面删除。要恢复该表,需要进行不完全恢复。
Oracle10g以后,当我们删除表时,默认Oracle只是在数据库字典里面对被删的表的进行了重命名,并没有真正的把表删除。
(3) 闪回表(flashback table)
所谓闪回表,就是将表里的数据会退到历史上的某个时间点,例如回退到用户误删除数据之前的时间点,从而将误删除的数据恢复回来,在这个过程中,数据库仍然可用,而且不需要类似于闪回日志一样的额外空间。
闪回表利用的是undo表空间里记录的数据被改变前的值,如果闪回表所需要的undo数据,由于保留的时间超过了初始化参数undo_retention所指定的值,
从而导致该undo数据块被其他事务覆盖,就不能恢复到指定的时间点了。

-- flashback闪回 SCN 恢复数据select timestamp_to_scn(to_timestamp('2017-10-11 03:10:00','YYYY-MM-DD HH:MI:SS')) from dual;-- 获取某时间的SCNselect * from tablename as OF SCN 15553883609344;-- 获取某时间的数据FLASHBACK TABLE employee TO SCN 15553883609344; -- 闪回表LASHBACK TABLE employee TO before drop; -- 恢复drop的表alter index“ bin$xxx” rename to xxxx;-- 命令修改索引名称ALTER TABLE lka2 ENABLE row movement ; -- 恢复表内查询数据时,启用行移动功能ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';flashback table lka2 to timestamp to_timestamp('2017-10-11 03:10:00','YYYY-MM-DD HH:MI:SS');flashback database to scn xxx;

关于数据闪回的几点说明:

*Flashback不支持sys用户与system表空间下的对象,也不能从回收站里拿到。故使用SYS或者SYSTEM用户登陆时,show recyclebin为空。

*实体在数据库保存时间不可保证,保留时间取决于系统运行状况,可能是几秒钟,也可能是几个月。

*基表闪回时,建立在表上的约束不可保证


原创粉丝点击