《Oracle闪回(Flashback)技术》由会员分享,可在线阅读,更多相关《Oracle闪回(Flashback)技术(34页珍藏版)》请在金锄头文库上搜索。
1、第1页 第十六章Oracle闪回 Flashback 技术 本章概述主要内容 第2页 本章概述 为了使Oracle数据库从任何逻辑误操作中迅速恢复 Oracle数据库提供了一系列人为错误更正技术 称为闪回 使用闪回 Flashback 技术可以实现基于磁盘上闪回恢复区的自动备份与恢复 本章介绍与数据库闪回相关的知识 闪回技术从oracle9i版本的闪回查询开始 在Oracle10g版本中系统地使用 Oracle11g版本中进行了加强 第3页 主要内容 16 1闪回技术概述16 2闪回数据库16 3闪回表16 4闪回查询16 5闪回版本查询16 6闪回事务查询16 7闪回丢弃16 8小结 第4页
2、 16 1闪回技术概述 为了使Oracle数据库从任何逻辑误操作中迅速恢复 Oracle数据库提供了一系列人为错误更正技术 称为闪回 传统上 从人为错误中恢复数据库唯一的办法就是采用用户管理的备份和恢复技术 而闪回技术提供了从逻辑错误中恢复的更有效和更快的方法 多数情况下 在用这种技术进行恢复时数据库仍然联机并对用户可用 此外 闪回技术允许选择性地复原某些对象 在Oracle11g中 闪回技术包括以下方面 闪回数据库 FlashbackDatabase 允许用户通过FlashbackDatabase语句 使数据库迅速地回滚到以前的某个时间点或某个SCN 系统更改号 值时的状态 闪回丢弃 Fla
3、shbackDrop 类似于操作系统的垃圾回收站功能 可以从中恢复被drop的表或索引 该功能基于撤销数据 第5页 闪回查询 FlashbackQuery 查询过去某个时间点或者某个SCN值时表中的数据信息 闪回版本查询 FlashbackVersionQuary 查询过去某个时间段或某个SCN段内表中数据的变化情况 闪回事务查询 FlashbackTransactionQuery 查看某个事务或所有事务在过去一段时间对数据进行的修改 闪回表 FlashbackTable 将表恢复到过去的某个时间点或某个SCN值时的状态 闪回技术最大的特点是实现自动备份与恢复 大大减小了管理开销 当Oracl
4、e数据库发生人为故障时 不需要事先备份数据库 就可以利用闪回技术快速而方便地进行恢复 为了使用数据库的闪回技术 必须启用撤销表空间自动管理回滚信息 如果要使用闪回删除技术和闪回数据库技术 还需要启用回收站 闪回恢复区 第6页 主要内容 16 1闪回技术概述16 2闪回数据库16 3闪回表16 4闪回查询16 5闪回版本查询16 6闪回事务查询16 7闪回丢弃16 8小结 第7页 16 2闪回数据库 闪回数据库能够使数据库迅速回滚到以前的某个时间点或者某个SCN 系统更改号 上 这是大多数逻辑损害时恢复数据库的最佳选择 Oracle系统为了使用数据库的闪回功能 特别创建了另外一组日志 就是Fla
5、shback logs 闪回日志 记录数据库的闪回操作 因为恢复不再受数据库大小的影响 使用闪回数据库恢复比用传统的恢复方法要快得多 也就是说 传统的恢复时间 MTTR 是由所需重建的数据文件的大小和所要应用的归档日志的大小决定的 而使用闪回数据库 恢复时间是由恢复过程中需要备份的变化的数量决定的 而不是数据文件和归档日志的大小 第8页 闪回数据库的结构是由恢复写入器 RVWR 后台进程和闪回数据库日志组成的 如果要启动闪回数据库功能 RVWR进程也要启动 闪回数据库日志是一种新的日志文件类型 它包括物理数据块先前的 图像 闪回恢复区是闪回数据库的先决条件 因为RVWR进程要将闪回日志写入该区
6、域中 所以在使用闪回数据库功能时 必须首先配置闪回恢复区 Oracle11g的FLASHBACK命令可以对表级进行恢复 也可以对数据库级进行恢复 要对数据库级进行恢复 就要用到FLASHBACKDATABASE命令 语法格式如下 FLASHBACK STANDBY DATABASE TO SCN TIMESTAMP TOBEFORE SCN TIMESTAMP 第9页 其中参数说明如下 lSTANDBY 指定恢复备用的数据库到某个SCN或者某个时间点上 如果没有备用数据库 则系统会返回一个错误 如果省略STANDBY子项 则数据库可能是主数据库 也可能是备用数据库 lTOSCN 指定一个系统改
7、变号SCN lTOBEFORESCN 恢复到之前的SCN lTOTIMESTAMP 需要恢复的时间表达式 lTOBEFORETIMESTAMP 恢复数据库到之前的时间表达式 用户可以从sysdate中得到系统的当前时间 当用户发出FLASHBACKDATABASE语句之后 数据库会首先检查所需要的归档文件与联机重建日志文件的可用性 如果可用 则会将数据库恢复到指定的SCN或者时间点上 第10页 在数据库中闪回数据库的总数和大小由DB FLASHBACK RETENTION TARGET初始化参数控制 可通过查询V FLASHBACK DATABASE LOG视图来确定能恢复到过去多远 如果数据
8、库中所保留的数据不够执行恢复 可使用标准的恢复过程恢复到过去的某个时间点上 如果数据文件集没有保留足够的数据 则数据库会返回一个错误 在这种情况下 可先使用数据文件脱机 然后再发出语句恢复剩余的部分 最后再用标准方法恢复这些脱机的数据文件 第11页 主要内容 16 1闪回技术概述16 2闪回数据库16 3闪回表16 4闪回查询16 5闪回版本查询16 6闪回事务查询16 7闪回丢弃16 8小结 第12页 16 3闪回表 闪回表是将表恢复到过去的某个时间点的状态 为DBA提供了一种在线 快速 便捷地恢复对表进行的修改 删除 插入等错误的操作 可以讲指定表中的数据 索引 触发器等恢复到指定的时间点
9、 Oracle11g的FlashbackTable有以下特性 在线操作 恢复到指定时间点或者SCN的任何数据 自动恢复相关属性 如索引 触发器 满足分布式的一致性 满足数据一致性 所有相关对象将自动一致 闪回表技术是基于撤销数据 undodata 来实现的 因此要想闪回到过去的某个时间点上 必须确保与撤销表空间有关的参数设置合理 与撤销表空间相关参数有undo management undo tablespace和undo retention 第13页 使用FLASHBACKTABLE语句可以对表进行闪回操作 语法如下 FLASHBACKTABLE schema tableTOSCN TIME
10、STAMPexpression ENABLE DISABLETRIGGERS 其中参数说明如下 SCN 将表恢复到指定的SCN时的状态 TIMESTAMP 将表恢复到指定的时间点 ENABLE DISABLETRIGGER 恢复后是否直接启用触发器 需要注意的是 如果需要FLASHBACK一个表 则需要保证如下几个方面 具备FLASHBACKANYTABLE的系统权限或者是该表的FLASHBACK对象权限 有该表的SELECT INSERT DELETE和ALTER权限 必须保证该表ROWMOVEMENT 第14页 例16 1 删除闪回表 SQL settimeonSQL createtabl
11、ehr mydep1asselect fromhr department SQL deletefromhr mydep1wheredepartment id 10 SQL flashbacktablehr mydep1totimestamp2totimestamp to tate 2012 04 0310 00 00 yyyy mm ddhh24 mi ss 第15页 主要内容 16 1闪回技术概述16 2闪回数据库16 3闪回表16 4闪回查询16 5闪回版本查询16 6闪回事务查询16 7闪回丢弃16 8小结 第16页 16 4闪回查询 闪回查询是Oracle9i提出的概念 指利用数据库回
12、滚段存放的信息查看指定表中过去某个时间点的数据信息 或过去某个时间段数据的变化情况 或某个事务对该表的操作信息等 使用闪回查询可以找到发生误操作前的数据情况 为恢复数据库提供依据 要实现闪回查询 必须将初始化参数UNDO MANAGEMENT设置为AUTO 这是此参数的默认值 初始化参数UNDO RETENTION决定了能往前闪回查询的最大时间 值越大可以往前闪回查询的最大时间越长 但占用的磁盘空间也越大 第17页 闪回查询的SELECT语句的语法格式为 SELECTcolumn name FROMtable name ASOFSCN TIMESTAMPexpression WHEREcond
13、ition 可以基于ASOFTIMESTAMP的闪回查询 也可以基于ASOFSCN的闪回查询 其实Oracle在内部都是使用SCN的 即使指定的是ASOFTIMESTAMP Oracle也会将其转换成SCN 系统时间与SCN之间的对应关系可以通过查询SYS模式下的SMON SCN TIME表获得 第18页 例如 SQL settimeon创建示例表 SQL createtablehr mydep4asselect fromhr departments 删除记录 SQL deletefromhr mydep4wheredepartment id 300 SQL commit 使用select查询
14、不到刚才删除的记录 但使用闪回查询可以找到 SQL select fromhr mydep4asoftimestamp2totimestamp to date 2012 3 2810 30 00 yyyy mm ddhh24 mi ss 3Wheredepartment id 300 第19页 主要内容 16 1闪回技术概述16 2闪回数据库16 3闪回表16 4闪回查询16 5闪回版本查询16 6闪回事务查询16 7闪回丢弃16 8小结 第20页 16 5闪回版本查询 Oracle的闪回版本查询功能 FlashbackVersionQuery 提供了一个审计行改变的查询功能 它能找到所有已经
15、提交了的行的记录 借助这个特殊功能 我们可以查看一行记录在一段时间内的变化情况 即一行记录的多个提交的版本信息 从而实现数据的行级恢复 使用该功能 可以轻松实现对应用系统进行审计 而没有必要使用细粒度的审计功能或者是使用LOGMNR了 语法格式为 SELECTcolumn name FROMtable name VERSIONSBETWEENSCN TIMESTAMPMINVALUE expressionANDMAXVALUE expression ASOFSCN TIMESTAMPexpression WHEREcondition 第21页 参数说明如下 VERSIONSBETWEEN 用于
16、指定闪回版本查询时的时间段或SCN段 ASOF 表示恢复单个版本 TIMESTAMP 表示时间 在进行闪回版本查询时 可以同时使用VERSIONS短语和ASOF短语 ASOF短语决定了进行查询的时间点或SCN VERSIONS短语决定了可见的行的版本信息 对于在VERSIONSBETWEEN下界之前开始的事务 或在ASOF指定的时间或SCN之后完成的事务 系统返回的版本信息为NULL 第22页 例16 2 创建一个读者信息表 SQL createtablereader idVarchar2 10 nameVarchar2 20 插入一条记录 SQL insertintoreadervalues 13100110 zs 更新表中数据 SQL updatereadersetid 13100101 wherename zs 提交 SQL commit 使用闪回版本查询 SQL selectversions starttime versions operation id name2fromreaderversionsbetweentimestampminvalueandmaxvalue 第23