设为首页 收藏本站
查看: 1418|回复: 0

[经验分享] Oracle 11g R2 闪回技术

[复制链接]

尚未签到

发表于 2018-9-21 11:42:04 | 显示全部楼层 |阅读模式
  为了使数据库能够从任何逻辑错误中迅速恢复,oracle推出了闪回技术。采用该技术,可以对行级和事物级的数据变化进行恢复,减少了数据恢复的时间,而且操作简单。通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。
  闪回技术包括以下各项:
  闪回查询:(FLASHBACK QUERY):查询过去某个时间点或某个SCN值时表中的数据信息
  闪回版本查询(FLASHBACK Version query):查询过去某个时间段或某个SCN段内表中数据变化的情况。
  闪回事物查询(FLASHBACK Transaction Query):查看某个事物或所有事物在过去一段时间对数据进行的修改。
  闪回数据库(FLASHBACK Database):将数据库恢复到过去某个时间点或某个SCN值时的状态
  闪回删除(FLASHBACK drop):将已经删除的表及其关联的对象恢复到删除前的状态。
  闪回表(FLASHBACK table):将表恢复到过去的某个时间点或某个SCN值时的状态。
  SCN是当oracle数据库更新后,有DBMS自动维护而累积递增的一个数字。可以通过查询数据字典V$DATABASE中的CURRENT_SCN获得当前的SCN号。
  闪回恢复区的含义
  oracle推荐指定一个闪回恢复区(FLASHRECOVERY AERA)作为存放备份与恢复相关的默认位置,这样ORACLE就可以实现自动的基于磁盘的备份与恢复。闪回恢复区是一块用来存储恢复相关的文件的存储空间,允许用户集中存储所有恢复相关的文件。以下几种文件可以存放在闪回恢复区。
  控制文件
  归档日志文件
  闪回日志
  控制文件和SPFILE自动备份
  RMAN备份集
  数据文件拷贝
  闪回恢复区主要通过以下3个初始化参数来设置和管理
  db_recovery_file_dest:指定闪回恢复区的位置
  db_recovery_file_dest_size:指定闪回恢复区的可用空间
  db_flashback_retention_target:该参数用来控制闪回日志中数据保留的时间,或者说,希望闪回数据库能够恢复到的最早的时间点。单位为min,默认是1440min,即一天。当然实际上可回退的时间还取决于闪回恢复区的大小,因为里面保存了回退所需要的闪回日志,所以这个参数要和db_recovery_file_dest_size配合修改。
  如果要撤销闪回恢复区,把初始化参数DB_RECOVERY_FILE_DEST的值清空。
  db_recovery_file_dest_size只有在DB_RECOVERY_FILE_DEST清空之后才可以清空
  设置闪回数据库
  设置了闪回恢复区,要启动闪回数据库功能,还需要进一步配置,数据必须处于归档模式,在设置闪回数据库
  数据库已经处于归档模式:
DSC0000.jpg

  数据库未启用闪回数据库
DSC0001.jpg

  建立闪回区域
DSC0002.jpg

  设置闪回数据库的数据保留周期为一天以min为单位
DSC0003.jpg

  启用闪回日志
DSC0004.jpg

  查询是否成功启用闪回恢复区
DSC0005.jpg

  查询是否成功启用闪回数据库
DSC0006.jpg

  闪回数据库
  闪回数据库能够使数据迅速的回滚到以前的某个时间点或者某个SCN上,这对数据库从逻辑错误中恢复特别有用。而且也是大多数发生逻辑损坏时恢复数据库最佳的选择。
  使用SCN闪回数据库
  查看数据库系统当前SCN
DSC0007.jpg

  改变数据库当前状态,模拟创建表TEST10,并插入一条记录
DSC0008.jpg

  进行闪回数据库恢复,将数据库恢复到创建表之前的状态,即SCN为1238544
DSC0009.jpg

  用RESETLOGS选项打开数据库
DSC00010.jpg

  验证数据库的状态,TEST10表不存在。
DSC00011.jpg

  查询数据库中当前最早的闪回SCN和时间
DSC00012.jpg

  按照指定时间闪回数据库
  查询数据库中当前时间和当前SCN
DSC00013.jpg

  改变数据库的当前状态,模拟创建表test11,并插入1条记录
DSC00014.jpg

  进行闪回数据库恢复,将数据库恢复到创建表之前的状态。
DSC00015.jpg

  使用RESETLOGS打开数据库
DSC00016.jpg

  验证数据库的状态test11表是否存在。
DSC00017.jpg

  闪回数据库操作的限制:
  数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复。闪回数据库只能基于当前正常运行的数据文件
  闪回数据库功能启动后,如果发生数据控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库
  不能使用闪回数据库进行数据文件收缩操作
  不能使用闪回数据库将数据库恢复到在闪回日志中可获得的最早的SCN之前的SCN,因为闪回日志文件在一定的条件下被删除,而不是始终保存在闪回恢复区中
  闪回表
  闪回表是将表恢复到过去的某个时间点或者指定的SCN而不用恢复数据文件,为DBA提供了一种在线、快速、便捷的恢复方式,可以恢复对表进行的修改、删除、插入等错误的操作。
  

     利用闪回表技术恢复表中的数据的过程,实际上是对表进行DML操作的过程。oracle自动维护与表相关联的索引、触发器、约束等。  

  为了使用数据库闪回功能,必须满足下列条件
  用户具有FALSHBACKANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限
  用户具有所操作表的SELECT/INSERT/DELETE/ALTER对象权限
  启动被操作表的ROW MOVEMENT特性,可以采用下列方式进行:

  SQL>>  闪回表语法格式:
  FLASHBACK TABLE [schema].table TO SCN |TIMESTAMP expression [ENABLE|DISABLE TRIGGERS]
  参数说明:
  SCN:将表恢复到指定的SCN时的状态
  TIMESTAMP:将表恢复到指定额时间点
  ENABLE|DISABLETRIGGERS:在恢复表中数据的过程中,表上的触发器时禁用还是激活(默认是引用)
  举例说明:
  使用SCOTT用户登录
DSC00018.jpg

  创建表,插入记录,提交事物
DSC00019.jpg

  查询当前SCN号,如果当前用户没有权限查询v$database,则以sys用户登录,授予当前用户访问数据字典的权限。
DSC00020.jpg

  更新记录,并提交事物
DSC00021.jpg

  查看表中的记录
DSC00022.jpg

  删除ID=3的记录
DSC00023.jpg

  启动test01表的ROW MOVEMENT特性
DSC00024.jpg

  将test01表恢复到2015-11-22 05:44:48时刻的状态
DSC00025.jpg

  将test01表恢复到SCN为1240503的状态。
DSC00026.jpg

  闪回删除
  闪回删除可以恢复使用DROP table语句删除的表,是一种对意外删除的表恢复机制。闪回删除的功能的实现主要是通过oracle数据库中的“回收站”技术实现的。在oracle数据库中,当执行DROP table操作时,并不立即收回表及其关联对象的空间,而是将他们重命名后放入一个称为“回收站”的逻辑容器中保存,直到用户决定永久删除他们或存储该表的表空间或存储空间不足时,表才真正被删除,为了使用数据库的闪回删除技术,必须开启数据库的“回收站”
  启动“回收站”将参数RECYCLEBIN设置为ON,在默认情况下“回收站”已经启动
DSC00027.jpg

  如果没有启动可以使用:
DSC00028.jpg

  查看回收站。当执行DROP table 时,表及关联的对象被命名后保存在“回收站”中,可以通过查询USER_RECYCLEBIN DBA_RECYCLEBIN视图获得被删除的表及其关联对象。
DSC00029.jpg

  通过USER_RECYCLEBIN查看被删除的表
DSC00030.jpg

  不支持sys用户和system用户,这两个用户下的表被删除之后,无法从回收站里拿到,查询时为“空”
DSC00031.jpg

  如果删除表的时候使用了PURGE短语,则表及其关联对象呗直接释放,空间被回收,相关信息不会进入“回收站”中
DSC00032.jpg

  清空回收站,由于被删除的表级其关联对象信息保存在“回收站”中,其存储空间并没有释放,因此需要定期清空“回收站”。或清除“回收站”中没有用的对象(表,索引,表空间)释放其所占用的磁盘空间
  语法如下:
  PURGE [TABLE 表名 | INDEX index]
  [RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACEtablespace [USER user]]
  参数说明:
  TABLE:从回收站中清除指定的表
  INDEX:从回收站中清除指定的索引,并回收其磁盘空间
  RECYCLEBIN:清空用户“回收站”,并回收所有对象的磁盘空间
  DBA_RECYCLEBIN:清空整个数据库系统的“回收站”,只有具有SYSDBA权限的用户才可以使用
  TABLESPACE :清除“回收站”中指定额表空间,并回收磁盘空间
  USER:清除回收站中指定表空间中特定用户的对象,并回收磁盘空间
DSC00033.jpg

  闪回删除操作,闪回删除的基本语法
  FLASHBACK TABLE [schema.]table to BEFOREDROP [RENAME TO table]
DSC00034.jpg

  闪回删除
  闪回删除举例说明:
DSC00035.jpg

DSC00036.jpg

DSC00037.jpg

  需要注意:只有本地管理的,非系统表空间中的表可以使用闪回删除操作。
  闪回查询
  允许根据时间点timestamp或SCN查看就的数据,除了可以查看旧数据,需要时可以通过检索旧数据来撤销错误的更改。
  使用SCOTT用户登录,对EMP表基于AS of TIMESTAMP的闪回查询
  SQL> show user;
  USER is "SCOTT"
DSC00038.jpg

  更新员工号为7900的工资,更新为2000,并提交事物
DSC00039.jpg

  更新员工号为7900的工资,更新两次,提交事物。
DSC00040.jpg

  更新员工号为7900的工资,更新为3500,并提交事物
DSC00041.jpg

  查看7900号员工的更新后工资。
DSC00042.jpg

  查询7900号员工前一个小时的工资是多少
DSC00043.jpg

  查询第一个事物提交,第二个事物还没有提交时7900员工的工资
DSC00044.jpg

  查询第二个事物提交,第三个事物还没有提交时的7900号员工的工资
DSC00045.jpg

  如果需要,可以将数据恢复到过去某个时刻的状态。
DSC00046.jpg

  如果对此有兴趣,请扫下面二维码免费获取更多详情
DSC00047.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-599376-1-1.html 上篇帖子: Linux/Centos 安装oracle报错“调用makefile '/oracle/produc 下篇帖子: Oracle数据库序列详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表