定义:闪回是一种逻辑层面的数据恢复技术,无法解决由于介质损坏造成的数据丢失。闪回的原理是利用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;