Flashback Database功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log日志。比RMAN更快速和高效,因此Flashback Database 可以看作是不完全恢复的替代技术。闪回数据库的前提是要开启归档日志。

 一、闪回原理

  在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过程速度比较传统的还原恢复通常快很多。

  1.1 闪回限制:
    ① Flashback Database 不能解决Media Failure, 这种错误RMAN恢复仍是唯一选择
    ② 如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore出来,然后利用Flashback Database执行剩下的Flashback Datbase。
    ③ 如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。
    ④ 使用Flashback Database锁能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCN。

  1.2 配置闪回参数:

  闪回数据库相关参数:
     ① db_recovery_file_dest               #决定闪回恢复区路径
     ② db_recovery_file_dest_size        #决定闪回恢复区大小
     ③ db_flashback_retention_target   #保留恢复最近多长时间的数据,单位为分钟。
  闪回相关视图:
     ① V$restore_point                           #闪回点
     ② V$FLASHBACK_DATABASE_LOG   #闪回日终信息
     ③ V$FLASHBACK_DATABASE_STAT

     ④ v$flash_recovery_area_usage;      #闪回区使用率

  1.3 开启归档和闪回功能:   

  SQL> SELECT flashback_on, force_logging, log_mode FROM v$database;
     FLASHBACK_ON FORCE_LOGGING LOG_MODE
     ------------------ -------------     ------------
      NO                 NO                   NOARCHIVELOG   

 开启闪回和归档方法:
  SQL>shutdown immediate;
  SQL>startup mount;
  SQL>alter database archivelog;#开启归档
  --SQL>alter database archivelog off ;#关闭归档功能
  SQL>alter database flashback on; #开启闪回功能
  --SQL>alter database flashback off; #关闭闪回功能
  SQL>alter database open; #打开数据库
  SQL>alter database force logging; #强制写日志

   1.4 闪回参数设置:    

  alter system set db_recovery_file_dest_size=5G scope=both;
  alter system set db_recovery_file_dest='/home/app/flash_recovery_area' scope=both;
  alter system set db_flashback_retention_target=2880;

 二、闪回数据库

  闪回步骤:

    ① 关闭数据库
    ② 启动数据库到mount状态[exclusive模式]
    ③ 闪回至某个时间点,SCN或还原点
    ④ 使用resetlogs打开数据库
  2.1 通过还原点闪回
    通过v$restore_point视图,可以查看当前数据库的闪回点。
     如果没有闪回点,可以创建个闪回点。方法如下:
    SQL>CREATE RESTORE POINT FLASHPOINT_1 GRARANTEE FLASHBACK DATABASE;#创建一个flashpoint_1的闪回点
   --进行相关的DML操作之后,闪回数据库到flashpoint_1状态
    SQL>SHUTDOWN IMMEDIATE #关闭数据库
    SQL>STARTUP MOUNT; #启到MOUNT状态
    SQL>FLASHBACK DATABASE TO RESTORE POINT FLASHPOINT_1; #闪回数据库到flashpoint_1闪回点
    SQL>ALTER DATABASE OPEN RESETLOGS; #打开数据库
   --删除归档日志
    RMAN TARGET /
    RMAN> DELETE ARCHIVELOG ALL; #删除所有归档日志
    RMAN> EXIT;
    SQL>DROP RESTORE POINT FLASHPOINT_1; #删除闪回点
    SQL>CREATE restore point FLASHPOINT_2 GRARANTEE FLASHBACK DATABASE; #新建闪回点
  2.2 通过SCN闪回
  SQL>SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER AS SCN_NO FROM DUAL;#获取当前数据库的SCN号
  --进行相关的DML操作之后,闪回数据库到SCN_NO状态
  SQL>SHUTDOWN IMMEDIATE #关闭数据库
  SQL>STARTUP MOUNT; #启到MOUNT状态
  SQL>FLASHBACK DATABASE TO SCN SCN_NO; #闪回数据库到闪回SCN_NO点
  SQL>ALTER DATABASE OPEN RESETLOGS; #打开数据库

   3 闪回数据库方法

  3.1 sqlplus下基于SCN闪回
   FLASHBACK DATABASE [<database_name>] TO SCN <system_change_number>
  3.2 sqlplus下基于时间戳闪回
   FLASHBACK DATABASE [<database_name>] TO TIMESTMP <system_timestamp_value>
  3.3 sqlplus下基于还原点闪回
   FLASHBACK DATABASE [<database_name>] TO RESTORE POINT <restore_point_name>
  3.4 RMAN下基于时间戳闪回
  RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2013-12-08 12:45:00','YYYY-MM-DD HH24:MI:SS')"
  3.5 RMAN下基于SCN闪回
   RMAN> FLASHBACK DATABASE TO SCN=15809979;
  3.6 RMAN下基于:归档序号
  RMAN> FLASHBACK DATABASE TO SEQUENCE=192 THREAD=1;

Oracle闪回(FlashBack)数据库的更多相关文章

  1. Oracle闪回flashback

    参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...

  2. Oracle闪回flashback总结

    1.说明: Ø  采用的技术. 使用的是多个技术. 1.      闪回日志 2.      回收站 3.      回滚段 无法使用回收站的操作 Drop table xxx purge; Drop ...

  3. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  4. Oracle 闪回归档(Flashback Database)

    cmd --管理员身份打开 sqlplus / as sysdba --管理数据库 shu immediate; --独占方式开始 startup mount --修改日期模式 alter datab ...

  5. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

  6. oracle闪回表详解

    --- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间 ...

  7. Oracle闪回操作

    Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select  to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...

  8. Oracle闪回表

    Oracle闪回技术 场景:测试环境数据库的表数据被误删除. 解决思路:使用闪回表技术 原理 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小 ...

  9. Oracle 闪回

    Oracle 闪回特性(FLASHBACK DATABASE) 本文来源于:gerainly 的<Oracle 闪回特性(FLASHBACK DATABASE) > -========== ...

  10. 6. Oracle闪回特性

    Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...

随机推荐

  1. Exceptionless搭配log4net记录日志

    接上篇: Exceptionless 本地部署 在部署完成后可以使用log4net搭配Exceptionless来记录日志. 过程很简单,使用Nuget安装Exceptionless.Log4net, ...

  2. 在windows里安装系统7、8、10或Offcie或Visio等推荐的激活工具

    不多说,直接上干货! (1)激活Windows或者Office前,你务必先进去KMSAuto Net的System界面,安装KMS-host Service; (2)然后回到Main主界面,选择Act ...

  3. gulp4.0 前端构建脚手架

    最近看了下gulp4.0的升级,感觉和3.0相比变化还是比较大的,很多3.0的写法和插件会出现一些莫名其妙的变化,详细的变化就先不说了,这里我直接把我配置好的代码拿过来吧,方便各位可以更好的学习和使用 ...

  4. ES6-Array

    /* * 数组解构赋值: * ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这种被称为解构. * 示例如下: */ var [a,b,c] = [1,2,3]; console.log ...

  5. Chapter 3 Phenomenon——6

    A low oath made me aware that someone was with me, and the voice was impossible not to recognize. 某人 ...

  6. Go pprof和火焰图

    Profiling 在计算机性能调试领域里,profiling 就是对应用的画像,这里画像就是应用使用 CPU 和内存的情况.也就是说应用使用了多少 CPU 资源?都是哪些部分在使用?每个函数使用的比 ...

  7. nuxt踩过的坑

    nuxt.js 简单介绍 nuxt官网:https://zh.nuxtjs.org/ 1.nuxt.js的原理图: 具体的原理介绍官网有详细的解释,欢迎移步官网,这里不再复述. 2.nuxt.js的优 ...

  8. PM2怎么开启ES6?

    node版本v6.14.2,无论是用配置文件 { "apps": [{ "name": "server", "script&quo ...

  9. 开发小技巧1——Logger

    开发小技巧1——Logger 在项目中加入静态Logger类,用于捕获并记录程序的进度.错误信息:   public static class Logger { public static void ...

  10. C#:ORM--实体框架EF(entity framework)(1)

    本文来自:http://www.cnblogs.com/xuf22/articles/5513283.html 一.什么是ORM ORM(Object-relational mapping),中文翻译 ...