闪回技术

  定义:闪回是一种逻辑层面的数据恢复技术,无法解决由于介质损坏造成的数据丢失。闪回的原理是利用UNDO镜像数据回溯或撤销提交的操作、或是利用回收站恢复错误操作、再或者是利用Flashback Logs将数据库恢复到过去的某个时间点。

一、闪回技术分类(五种使用了undo,一种使用了回收站,一种使用了闪回日志)

  1. 闪回 DROP

  2. 闪回表

  3. 闪回查询 FLASHBACK QUERY:只能查询以前某个时间点的数据库,但永远不能对过去时间点的数据库做DML操作

  4. 闪回数据归档 FLASHBACK DATA ARCHIVE

  5. 闪回版本查询

  6. 闪回事务查询

  7. 闪回数据库

 二、闪回DROP(基于回收站)

  1. 闪回的是drop掉的表,且该表是存在于回收站中。

  2. 通过非purge方式删除的表,表原来所使用的段中的数据是没有删除的,而是把表以回收站方式重命名,但是如果发生空间挤占,则该表会从回收站清空,注意:sys用户删除的表是不走回收站的

  3. 闪回是后进先出 LIFO,清除是先进先出 FIFO

  4. 闪回有重名的表时,要对闪回的表进行重命名 SQL> flashbackup table abc to before drop rename to abc_old;

  5. 如果要闪回的表上之前存在索引,约束等,在闪回后,索引,约束仍然起作用。

三、闪回表(基于UNDO)

  1. 通常是将表回退到以前的某个时间点或者SCN上,是基于undo的,且要开启行移动

  2. SYS的表不能被闪回

  3. 缺省写,闪回表的过程中所有的trigger都关闭

  4. 物化视图下不允许闪回表

四、闪回数据归档

  1. 后台进程FBDA

  2. 创建归档方案,并将该方案授权给相关用户

     3. 删除归档方案:SQL> drop flashback archive flash_archive;

 五、闪回版本查询

  1. 仅仅能够得到过去某个时间点上的数据,不能反映出一段时间内数据库的变化细节

  2. 创建新表测试时,事务要在创建后的15秒之后在提交

六、闪回事务查询

  1. 可以提供撤销查询语句

  2. 数据字典视图:flashback_transaction_query

  3. 可以和闪回版本查询一起使用

  4. SQL> select undo_sql from flashback_transaction_query where xid=hextoraw('0200150054040000');  --- 红色内容部分来自于闪回版本查询的versions _xid

七、闪回数据库(工作中很少用到)

  1. 相当于不完全恢复但不能替代不完全恢复,针对的是逻辑错误

  2. 需要开启闪回日志,且闪回日志不能被多路复用和归档,都是自动创建和管理的

  3. 闪回数据库的配置必须在MOUNT状态下,且数据库为归档模式

  4. 指定闪回恢复区大小:SQL> ALTER SYSTEM SET db_recovery_file_dest_size=xxx; 指定闪回恢复区路径:SQL> ALTER SYSTEM SET db_recovery_file_dest='/xxxx/xxx' ;指定恢复区保留时间:SQL> ALTER SYSTEM SET db_flashback_retention_target=1440;

  5. 开启闪回:SQL> ALTER DATABASE FLASHBACK ON;

原文地址:https://www.cnblogs.com/eniniemand/p/14300785.html