分类:
2012-03-04 21:23:17
原文地址:Oracle Flashback闪回技术学习(一) 作者:weiyonghz
一、Flashback闪回技术概述:
当Oracle数据库发生逻辑错误时,必须使用flashback技术,实现快速和方便的恢复数据。对于人为错误,要确定受到错误事务影响的对象或者记录是非常困难的。使用flashback技术,你能够诊断出错误是如何被引入到数据库的,并且你能够修复这些错误对数据库造成的破坏。你能够查看对特定行更改的事务,也能够查看到指定行在某段时间的版本,也能够查看在过去某个时间点的数据。
Flashback技术适用于不同的对象级别如database、table和Tx。所涉及到的flashback技术包括有针对数据库级别的flashback database,针对表级别的flashback drop、flashback table、flashback query、flashback version,以及针对Tx级别的flashback transaction。
Flashback database使用flashback日志执行闪回,flashback drop使用recycle bin(回收站),而其他的闪回技术则使用UNDO。
需要注意的一点是,并不是所有的闪回特性都会更改数据库。其中有一些只是简单的查询数据的版本,这些闪回技术可以作为诊断问题和帮助恢复的工具。这些flashback查询(包括flashback query, flashback version, flashback transaction)的结果可以帮助你决定使用那种flashback操作(database-modifying类型,如flashback database, flashback drop, flashback table)用于修复问题。
二、逻辑层闪回
大部份的闪回特性是在逻辑层的,能够让你查看和控制数据库对象,逻辑层闪回特性不需要依赖于RMAN。除了flashback drop之外,逻辑闪回特性依赖于UNDO数据。逻辑闪回主要包括:
1.Flashback Query:
通过指定一个目标时间,并执行数据库的查询,可以查看在目标时间点时所存在的数据。通过这个方法可以将不希望被更改的数据(如对某张表执行了错误的update)恢复到错误发生之前的目标时间。
2.Flashback Version Query
用于查看一个或多个表中在特定的时间段内所有记录的所有版本。也可以检索某个记录的不同版本之间的元数据,包括开始时间、结束时间、操作和事务ID。也可以使用该特性恢复丢失的数据,以及对表的更改进行审计。
3.Flashback Transaction Query
用于查看某个事务的对数据库的更改,或者在某个指定的时间周期内所有事务对数据库的更改。
4.Flashback Transaction
用于反转一个事务。数据库会确定事务之间的依赖性,并实际上创建一个修正的事务,用于反转不希望的更改。数据库退回到一个好像该事务或者所依赖的事务从来没有发生过的一个状态。
5.Flashback Table
通告flashback table可以在线的恢复一个或者多个表到指定的过去的某个时间点。在很多情况下,flashback table消除了复杂的point-in-time recovery操作。Flashback table恢复表的同时,能够自动维护相关的属性如索引、触发器和约束。.
6.Flashback Drop
用于反转drop table的操作,即将被drop的表恢复回来。
三、物理层闪回
Oracle Flashback Database属于物理层闪回,提供了一种更有效率的可以实现时间点恢复的数据保护。如果当前的数据文件存在不希望的更改,就可以使用flashback database把数据文件回退到过去的一个时间。其结果差不多和DBPITR(database point-in-time recovery)一样,但是flashback database更快,因为它不需要从备份中恢复数据文件,并且比media recovery所需要的redo更少。
Flashback Database使用flashback logs存取数据块的以前的版本,同时会存储一些信息在归档日志中。Flashback Database需要配置fast recovery area用于存储flashback logs,默认情况下Flashback logging是不激活的。
Oracle还支持通过恢复点(restore point)将数据库快速的恢复到过去的某个时间点。恢复点相当于是SCN的别名。如果你预感到需要将数据库部分或者全部的恢复到某个时间点,则可以在任何时间创建一个恢复点。受保护的恢复点(guaranteed restore point)确保你能够使用flashback database把数据库恢复到恢复点的时间。
补充:关于fast recovery area和flash recovery area
fast recovery area是一个可选的磁盘存储目录,用于存储恢复相关的文件,如控制文件和联机日志文件的拷贝,归档日志文件,闪回日志,以及RMAN的备份。Oracle数据库和RMAN自动管理这些在fast recovery area中的文件。可以为fast recovery area指定磁盘配额(disk quota),以限制fast recovery area的最大存储空间。在Oracle11g之前称为flash recovery area。