在Oracle的操作工程中,会不可避免地出现操作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止。在传统意义上,当发生数据丢失、数据错误问题时,解决的主要办法是数据的导入导出、备份恢复技术,这些方法都需要在发生错误前,有一个正确的备份才能进行恢复。为了减少这方面的损失,Oracle提供了闪回技术。有了闪回技术,就可以实现数据的快速恢复,而且不需要数据备份。闪回的类型:
闪回表(flashback table) :恢复到过去的一个是时间点
闪回删除(flashback drop) :回收站中将已删除的对象恢复到删除之前的状态
闪回版本查询(flashback version query) :查看用户提交了的增删改的操作以及相应操作时间的记录
闪回事务查询(flashback transaction query) :查询某个事务甚至撤销一个已经提交的事务
闪回的益处
恢复中,闪回技术是革命性的进步
传统的恢复技术缓慢:
•它是整个数据库或者一个文件恢复,不只恢复损坏的数据
•在数据库日志中每个修改都必须被检查
闪回速度快:
•通过行和事务把改变编入索引
•仅仅改变了的数据会被恢复
闪回命令很容易:
•没有复杂棘手的多步程序
闪回表
闪回表,实际上是将表中的数据快速恢复到过去的一个是时间点或者系统改变号SCN上。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo命令可以了解这些信息。
用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,某个修改操作在提交后被记录在撤销表空间中,保留时间为900秒,用户可以在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改之前的状态。
闪回表的步骤:
1.执行表的闪回要设置用户权限:grant flashback any table to scott;
2. 获取要恢复的点(SCN号): select sysdate 时间, timestamp_to_scn(sysdate) SCN from dual;
3. 将表的行移动功能打开:alter table flshback_table enable row movement;
4. 执行闪回表:flashback table flashback_table to scn 945018(获取到的scn号,也可指定在某个时间段恢复);