第16章Oracle闪回(Flashback)技术_第1页
第16章Oracle闪回(Flashback)技术_第2页
第16章Oracle闪回(Flashback)技术_第3页
第16章Oracle闪回(Flashback)技术_第4页
第16章Oracle闪回(Flashback)技术_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十六章第十六章Oracle闪回(闪回(Flashback)技术技术本章概述 主要内容1本章概述本章概述 为了使为了使Oracle数据库数据库从从任何逻辑误操作任何逻辑误操作中迅速恢复,中迅速恢复,Oracle 数据库数据库提供了一系列人为错误更正技术,称为闪回。提供了一系列人为错误更正技术,称为闪回。使用闪回(使用闪回(Flashback)技术可以实现基于磁盘上闪回恢)技术可以实现基于磁盘上闪回恢复区的自动备份与恢复。本章介绍与数据库闪回相关的知复区的自动备份与恢复。本章介绍与数据库闪回相关的知识。闪回技术从识。闪回技术从oracle9i版本的闪回查询开始,在版本的闪回查询开始,在Oracl

2、e10g版本中系统地使用,版本中系统地使用,Oracle11g版本中进行了加版本中进行了加强。强。2主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回查询闪回查询16.5 闪回版本查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7 闪回丢弃闪回丢弃16.8 小结小结316.1 闪回技术概述闪回技术概述 为了使为了使Oracle数据库数据库从从任何逻辑误操作任何逻辑误操作中迅速恢复,中迅速恢复,Oracle 数据库数据库提供了一系列人为错误更正技术,称为闪回。提供了一系列人为错误更正技术,称为闪回。传统上,从人为错误中恢复

3、数据库唯一的办法就是采用用户传统上,从人为错误中恢复数据库唯一的办法就是采用用户管理的备份和恢复技术。而闪回技术提供了从逻辑错误中恢管理的备份和恢复技术。而闪回技术提供了从逻辑错误中恢复的更有效和更快的方法,多数情况下,在用这种技术进行复的更有效和更快的方法,多数情况下,在用这种技术进行恢复时数据库仍然联机并对用户可用。此外,闪回技术允许恢复时数据库仍然联机并对用户可用。此外,闪回技术允许选择性地复原某些对象。在选择性地复原某些对象。在Oracle11g中,闪回技术包括以下中,闪回技术包括以下方面:方面: 闪回数据库(闪回数据库(Flashback Database):允许用户通过):允许用户

4、通过Flashback Database语句,使数据库迅速地回滚到以前的某个语句,使数据库迅速地回滚到以前的某个时间点或某个时间点或某个SCN(系统更改号)值时的状态。(系统更改号)值时的状态。 闪回丢弃(闪回丢弃(Flashback Drop):类似于操作系统的垃圾):类似于操作系统的垃圾回收站功能,可以从中恢复被回收站功能,可以从中恢复被drop的表或索引。该功能基于的表或索引。该功能基于撤销数据。撤销数据。4 闪回查询(闪回查询(Flashback Query):查询过去某个时间点):查询过去某个时间点或者某个或者某个SCN值时表中的数据信息。值时表中的数据信息。 闪回版本查询(闪回版本

5、查询(Flashback Version Quary):查询过):查询过去某个时间段或某个去某个时间段或某个SCN段内表中数据的变化情况。段内表中数据的变化情况。 闪回事务查询(闪回事务查询(Flashback Transaction Query):查):查看某个事务或所有事务在过去一段时间对数据进行的修改。看某个事务或所有事务在过去一段时间对数据进行的修改。 闪回表(闪回表(Flashback Table):将表恢复到过去的某个):将表恢复到过去的某个时间点或某个时间点或某个SCN值时的状态。值时的状态。 闪回技术最大的特点是实现自动备份与恢复,大大减闪回技术最大的特点是实现自动备份与恢复,

6、大大减小了管理开销。当小了管理开销。当Oracle数据库发生人为故障时,不需要事数据库发生人为故障时,不需要事先备份数据库,就可以利用闪回技术快速而方便地进行恢复。先备份数据库,就可以利用闪回技术快速而方便地进行恢复。为了使用数据库的闪回技术,必须启用撤销表空间自动管理为了使用数据库的闪回技术,必须启用撤销表空间自动管理回滚信息。如果要使用闪回删除技术和闪回数据库技术,还回滚信息。如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。需要启用回收站、闪回恢复区。5主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回

7、查询闪回查询16.5 闪回版本查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7 闪回丢弃闪回丢弃16.8 小结小结616.2 闪回数据库 闪回数据库能够使数据库迅速回滚到以前的某个时间点闪回数据库能够使数据库迅速回滚到以前的某个时间点或者某个或者某个SCN(系统更改号)上。这是大多数逻辑损害时恢(系统更改号)上。这是大多数逻辑损害时恢复数据库的最佳选择。复数据库的最佳选择。Oracle系统为了使用数据库的闪回功系统为了使用数据库的闪回功能,特别创建了另外一组日志,就是能,特别创建了另外一组日志,就是Flashback_logs(闪回日闪回日志志),记录数据库的闪回操作。,记录数据库的

8、闪回操作。 因为恢复不再受数据库大小的影响,使用闪回数据库因为恢复不再受数据库大小的影响,使用闪回数据库恢复比用传统的恢复方法要快得多。也就是说,传统的恢复恢复比用传统的恢复方法要快得多。也就是说,传统的恢复时间(时间(MTTR)是由所需重建的数据文件的大小和所要应用)是由所需重建的数据文件的大小和所要应用的归档日志的大小决定的。而使用闪回数据库,恢复时间是的归档日志的大小决定的。而使用闪回数据库,恢复时间是由恢复过程中需要备份的变化的数量决定的,而不是数据文由恢复过程中需要备份的变化的数量决定的,而不是数据文件和归档日志的大小。件和归档日志的大小。7 闪回数据库的结构是由恢复写入器(闪回数据

9、库的结构是由恢复写入器(RVWR)后台进)后台进程和闪回数据库日志组成的。如果要启动闪回数据库功能,程和闪回数据库日志组成的。如果要启动闪回数据库功能,RVWR进程也要启动。闪回数据库日志是一种新的日志文件进程也要启动。闪回数据库日志是一种新的日志文件类型,它包括物理数据块先前的类型,它包括物理数据块先前的“图像图像”。闪回恢复区是闪回。闪回恢复区是闪回数据库的先决条件,因为数据库的先决条件,因为RVWR进程要将闪回日志写入该区进程要将闪回日志写入该区域中,所以在使用闪回数据库功能时,必须首先配置闪回恢域中,所以在使用闪回数据库功能时,必须首先配置闪回恢复区。复区。 Oracle11g的的FL

10、ASHBACK命令可以对表级进行恢复,命令可以对表级进行恢复,也可以对数据库级进行恢复。要对数据库级进行恢复,就要也可以对数据库级进行恢复。要对数据库级进行恢复,就要用到用到FLASHBACK DATABASE命令,语法格式如下:命令,语法格式如下:FLASHBACK STANDBY DATABASE TO SCN | TIMESTAMP | TO BEFORE SCN | TIMESTAMP 8其中参数说明如下:其中参数说明如下: l STANDBY:指定恢复备用的数据库到某个:指定恢复备用的数据库到某个SCN或者或者某个时间点上。如果没有备用数据库,则系统会返回一个错某个时间点上。如果没有

11、备用数据库,则系统会返回一个错误。如果省略误。如果省略STANDBY子项,则数据库可能是主数据库,子项,则数据库可能是主数据库,也可能是备用数据库。也可能是备用数据库。l TO SCN :指定一个系统改变号:指定一个系统改变号SCN。l TO BEFORE SCN :恢复到之前的:恢复到之前的SCN。l TO TIMESTAMP:需要恢复的时间表达式。:需要恢复的时间表达式。l TO BEFORE TIMESTAMP:恢复数据库到之前的时间:恢复数据库到之前的时间表达式。表达式。 用户可以从用户可以从sysdate中得到系统的当前时间。中得到系统的当前时间。 当用户发出当用户发出FLASHBA

12、CK DATABASE语句之后,数语句之后,数据库会首先检查所需要的归档文件与联机重建日志文件的可据库会首先检查所需要的归档文件与联机重建日志文件的可用性。如果可用,则会将数据库恢复到指定的用性。如果可用,则会将数据库恢复到指定的SCN或者时间或者时间点上。点上。9 在数据库中闪回数据库的总数和大小由在数据库中闪回数据库的总数和大小由DB_FLASHBACK_RETENTION_TARGET初始化参数控初始化参数控制。可通过查询制。可通过查询V$FLASHBACK_DATABASE_LOG视图视图来确定能恢复到过去多远。来确定能恢复到过去多远。 如果数据库中所保留的数据不够执行恢复,可使用如果

13、数据库中所保留的数据不够执行恢复,可使用标准的恢复过程恢复到过去的某个时间点上。标准的恢复过程恢复到过去的某个时间点上。 如果数据文件集没有保留足够的数据,则数据库会如果数据文件集没有保留足够的数据,则数据库会返回一个错误,在这种情况下,可先使用数据文件脱机,返回一个错误,在这种情况下,可先使用数据文件脱机,然后再发出语句恢复剩余的部分,最后再用标准方法恢复然后再发出语句恢复剩余的部分,最后再用标准方法恢复这些脱机的数据文件。这些脱机的数据文件。10主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回查询闪回查询16.5 闪回版本

14、查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7 闪回丢弃闪回丢弃16.8 小结小结1116.3 闪回表闪回表 闪回表是将表恢复到过去的某个时间点的状态,为闪回表是将表恢复到过去的某个时间点的状态,为DBA提供了一种在线、快速、便捷地恢复对表进行的修改、提供了一种在线、快速、便捷地恢复对表进行的修改、删除、插入等错误的操作,可以讲指定表中的数据、索引、删除、插入等错误的操作,可以讲指定表中的数据、索引、触发器等恢复到指定的时间点。触发器等恢复到指定的时间点。Oracle11g的的Flashback Table有以下特性。有以下特性。* 在线操作。在线操作。*恢复到指定时间点或者恢复到

15、指定时间点或者SCN的任何数据。的任何数据。*自动恢复相关属性,如索引、触发器。自动恢复相关属性,如索引、触发器。*满足分布式的一致性。满足分布式的一致性。*满足数据一致性,所有相关对象将自动一致。满足数据一致性,所有相关对象将自动一致。*闪回表技术是基于撤销数据(闪回表技术是基于撤销数据(undodata)来实现的,因)来实现的,因此要想闪回到过去的某个时间点上,必须确保与撤销表空此要想闪回到过去的某个时间点上,必须确保与撤销表空间有关的参数设置合理。与撤销表空间相关参数有间有关的参数设置合理。与撤销表空间相关参数有undo_management、undo_tablespace和和undo_

16、retention。12使用使用FLASHBACK TABLE语句可以对表进行闪回操作,语语句可以对表进行闪回操作,语法如下:法如下:FLASHBACK TABLE schema. table TOSCN | TIMESTAMP expressionENABLE | DISABLE TRIGGERS其中参数说明如下:其中参数说明如下:uSCN:将表恢复到指定的:将表恢复到指定的SCN时的状态。时的状态。uTIMESTAMP:将表恢复到指定的时间点。:将表恢复到指定的时间点。uENABLE | DISABLE TRIGGER:恢复后是否直接启用触:恢复后是否直接启用触发器。发器。u需要注意的是,

17、如果需要需要注意的是,如果需要FLASHBACK一个表,则需一个表,则需要保证如下几个方面:要保证如下几个方面:u具备具备FLASHBACK ANY TABLE的系统权限或者是该表的系统权限或者是该表的的FLASHBACK对象权限;对象权限;u有该表的有该表的SELECT、INSERT、DELETE和和ALTER权限;权限;u必须保证该表必须保证该表ROW MOVEMENT。13【例【例16-1】 删除闪回表。删除闪回表。SQLset time onSQLcreate table hr.mydep1 as select*from hr.department;SQLdelete from hr.

18、mydep1 where department_id=10;SQLflashback table hr.mydep1 to timestamp2 to timestamp(to_tate(2012-04-03 10:00:00, yyyy-mm-dd hh24:mi:ss);14主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回查询闪回查询16.5 闪回版本查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7 闪回丢弃闪回丢弃16.8 小结小结1516.4 闪回查询闪回查询 闪回查询是闪回查询是Oracle9i提出的概念,

19、指利用数据库回滚段提出的概念,指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信去某个时间段数据的变化情况,或某个事务对该表的操作信息等。使用闪回查询可以找到发生误操作前的数据情况,为息等。使用闪回查询可以找到发生误操作前的数据情况,为恢复数据库提供依据。恢复数据库提供依据。 要实现闪回查询,必须将初始化参数要实现闪回查询,必须将初始化参数UNDO_MANAGEMENT设置为设置为AUTO,这是此参数的默认,这是此参数的默认值。初始化参数值。初始化参数UNDO_RETEN

20、TION决定了能往前闪回查决定了能往前闪回查询的最大时间,值越大可以往前闪回查询的最大时间越长,询的最大时间,值越大可以往前闪回查询的最大时间越长,但占用的磁盘空间也越大。但占用的磁盘空间也越大。16 闪回查询的闪回查询的SELECT语句的语法格式为:语句的语法格式为:SELECT column_name , FROM table_nameAS OF SCN | TIMESTAMP expressionWHERE condition 可以基于可以基于AS OF TIMESTAMP的闪回查询,也可以基的闪回查询,也可以基于于AS OF SCN的闪回查询。的闪回查询。 其实其实Oracle在内部都

21、是使用在内部都是使用SCN的,即使指定的是的,即使指定的是AS OF TIMESTAMP,Oracle也会将其转换成也会将其转换成SCN。系统时间。系统时间与与SCN之间的对应关系可以通过查询之间的对应关系可以通过查询SYS模式下的模式下的SMON_SCN_TIME表获得。表获得。17例如:例如:SQLset time on创建示例表:创建示例表:SQLcreate table hr.mydep4 as select * from hr.departments;删除记录:删除记录:SQLdelete from hr.mydep4 where department_id=300;SQLcommi

22、t;使用使用select查询不到刚才删除的记录,但使用闪回查询可查询不到刚才删除的记录,但使用闪回查询可以找到:以找到:SQLselect * from hr.mydep4 as of timestamp2 to timestamp (to_date(2012-3-28 10:30:00, yyyy-mm-dd hh24: mi:ss)3 Where department_id=300;18主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回查询闪回查询16.5 闪回版本查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7

23、闪回丢弃闪回丢弃16.8 小结小结1916.5 闪回版本查询闪回版本查询 Oracle的闪回版本查询功能(的闪回版本查询功能(Flashback Version Query)提供了一个审计行改变的查询功能,它能找到所有已经提提供了一个审计行改变的查询功能,它能找到所有已经提交了的行的记录。借助这个特殊功能,我们可以查看一行交了的行的记录。借助这个特殊功能,我们可以查看一行记录在一段时间内的变化情况,即一行记录的多个提交的记录在一段时间内的变化情况,即一行记录的多个提交的版本信息,从而实现数据的行级恢复。使用该功能,可以版本信息,从而实现数据的行级恢复。使用该功能,可以轻松实现对应用系统进行审计

24、,而没有必要使用细粒度的轻松实现对应用系统进行审计,而没有必要使用细粒度的审计功能或者是使用审计功能或者是使用LOGMNR了。了。语法格式为:语法格式为:SELECT column_name , FROM table_nameVERSIONS BETWEEN SCN | TIMESTAMPMINVALUE | expression AND MAXVALUE |expressionAS OF SCN | TIMESTAMP expressionWHERE condition20 参数说明如下:参数说明如下: VERSIONS BETWEEN:用于指定闪回版本查询时:用于指定闪回版本查询时的时间段

25、或的时间段或SCN段;段; AS OF:表示恢复单个版本;:表示恢复单个版本; TIMESTAMP:表示时间。:表示时间。 在进行闪回版本查询时,可以同时使用在进行闪回版本查询时,可以同时使用VERSIONS短语短语和和AS OF短语。短语。 AS OF短语决定了进行查询的时间点或短语决定了进行查询的时间点或SCN,VERSIONS短语决定了可见的行的版本信息。对于在短语决定了可见的行的版本信息。对于在VERSIONS BETWEEN下界之前开始的事务,或在下界之前开始的事务,或在AS OF指定的时间或指定的时间或SCN之后完成的事务,系统返回的版本之后完成的事务,系统返回的版本信息为信息为N

26、ULL。21【例【例16-2】创建一个读者信息表。】创建一个读者信息表。SQLcreate table reader (id Varchar2(10),name Varchar2(20);插入一条记录:插入一条记录:SQLinsert into reader values (13100110, zs);更新表中数据:更新表中数据: SQLupdate reader set id=13100101 where name=zs;提交:提交:SQLcommit;使用闪回版本查询:使用闪回版本查询:SQLselect versions_starttime, versions_operation, id

27、, name2 from reader versions between timestamp minvalue and maxvalue;22执行结果如图执行结果如图16-1所示所示图图16-1 闪回版本查询闪回版本查询23主要内容主要内容16.1 闪回技术概述闪回技术概述16.2 闪回数据库闪回数据库16.3 闪回表闪回表16.4 闪回查询闪回查询16.5 闪回版本查询闪回版本查询16.6 闪回事务查询闪回事务查询16.7 闪回丢弃闪回丢弃16.8 小结小结2416.6 闪回事务查询 事务是访问数据库时一系列的逻辑相关动作。事务是访问数据库时一系列的逻辑相关动作。Oracle11g的闪回事务

28、查询就是对过去某段时间内所完成的事务的查询的闪回事务查询就是对过去某段时间内所完成的事务的查询和撤销。和撤销。 闪回事务查询是一种诊断工具,用于帮助识别数据库闪回事务查询是一种诊断工具,用于帮助识别数据库发生的事务级变化。通过闪回事务分析,可以识别在一个特发生的事务级变化。通过闪回事务分析,可以识别在一个特定的时间段内所发生的所有变化,也可以对数据库表进行事定的时间段内所发生的所有变化,也可以对数据库表进行事务级恢复。闪回事务查询的基础仍然是依赖于撤销数据务级恢复。闪回事务查询的基础仍然是依赖于撤销数据(Undodata),它也是利用初始化的数据库参数),它也是利用初始化的数据库参数UNDO_

29、RETENTION来确定已经提交的撤销数据在数据库中来确定已经提交的撤销数据在数据库中的保存时间。的保存时间。 【例【例16-3】已经提交的事务,通过闪回事务查询:】已经提交的事务,通过闪回事务查询:SQLCONNECT sys / zzuli AS sysdbaSQLselect table_name, undo_sql from flashback_transaction_query where rownumSHOW PARAMETER RECYCLEBIN SQLALTER SYSTEM SET RECYCLEBIN=ON;29 当执行当执行DROP TABLE操作时,表及其关联对象被命

30、名后保存操作时,表及其关联对象被命名后保存在在“回收站回收站”中,可以通过查询中,可以通过查询USER_RECYCLEBIN、DBA_RECYCLEBIN视图获得被删除的表及其关联对象的信息。视图获得被删除的表及其关联对象的信息。 (1) 查看回收站中的数据:查看回收站中的数据:SQLselect object_name, original_name, createtime,droptime from dba_recycle; (2) 从回收站中恢复数据:从回收站中恢复数据:SQLflashback table hr.mydep2 to before drop; 如果在删除表时使用了如果在删除表时使用了PURGE短语,则表及关联对象被短语,则表及关联对象被直接释放,空间被回收,相关直接释放,空间被回收,相关 信息不会进入信息不会进入“回收站回收站”中:中:SQLCREATE TABLE test_purge(2 ID MUMBER PRIMARY KEY, name CHAR(20)3);SQLDROP TABLE test_purge PURGE;SQLSELECT OBJECT_NAME, ORIGINAL_NAME, TYPE2 FROM USER_RECYCLEBIN;30(3) 清除回收站清除回收站 由于被删除表及其关联对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论