第12章闪回技术_第1页
第12章闪回技术_第2页
第12章闪回技术_第3页
第12章闪回技术_第4页
第12章闪回技术_第5页
已阅读5页,还剩41页未读, 继续免费阅读

下载本文档

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

文档简介

1、第第12章章 闪回技术闪回技术主要内容 闪回技术介绍 闪回查询 闪回版本查询 闪回事务查询 闪回表 闪回删除 闪回数据库 12.1 闪回技术介绍闪回技术介绍 闪回基本概念 闪回技术分类基本概念 Oracle 9i实现了基于回滚段的闪回查询(Flashback Query)技术,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。 在Oracle 11g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能。 闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。 采用闪回技术,可以针对行级和事务级发生过变化的数据

2、进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。 闪回技术分类 闪回查询(Flashback Query):查询过去某个时间点或某个SCN值时表中的数据信息; 闪回版本查询(Flashback Version Query):查询过去某个时间段或某个SCN段内表中数据的变化情况; 闪回事务查询(Flashback Transaction Query):查看某个事务或所有事务在过去一段时间对数据进行的修改; 闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时的状态; 闪回删除(Flashback Dro

3、p):将已经删除的表及其关联对象恢复到删除前的状态; 闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某个SCN值时的状态。12.2 闪回查询闪回查询 闪回查询的概念 闪回查询操作12.2.1闪回查询的概念 闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。 为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。 与撤销表空间相关的参数包括 : UNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息; UNDO_T

4、ABLESPACE:指定用于回滚信息自动管理的撤销表空间名; UNDO_RETENTIOIN:指定回滚信息的最长保留时间。 12.2.2闪回查询操作闪回查询操作 闪回查询可以返回过去某个时间点已经提交事务操作的结果。 基本语法: SELECT column_name, FROM table_name AS OF SCN|TIMESTAMP expression WHERE condition 基于AS OF TIMESTAMP的闪回查询 基于AS OF SCN的闪回查询 基本语法为: SELECT column_name,FROM table_name AS OF SCN|TIMESTAMP

5、expression WHERE condition; 20:57:35 SQLSELECT empno,sal FROM scott.emp WHERE empno=7369; EMPNO SAL - - 7369 800 20:57:39 SQLUPDATE scott.emp SET sal=2000 WHERE empno=7369; 20:57:59 SQLCOMMIT; 20:58:03 SQLUPDATE scott.emp SET sal=2500 WHERE empno=7369; 20:58:54 SQLCOMMIT; 20:58:57 SQLSELECT empno,sa

6、l FROM scott.emp WHERE empno=7369; EMPNO SAL - - 7369 2500 21:01:02 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP SYSDATE-1/24 WHERE empno=7369; EMPNO SAL - - 7369 800 21:02:43 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2012-11-22 20:58:10,YYYY-MM-DD HH24:MI:SS) WHERE empno

7、=7369; EMPNO SAL - - 7369 2000 下面是一个基于AS OF SCN的闪回查询示例。 21:08:34 SQLSELECT current_scn FROM v$database; CURRENT_SCN - 1455600 21:08:37 SQLSELECT empno,sal FROM scott.emp WHERE empno=7369; EMPNO SAL - - 7369 2500 21:09:08 SQLUPDATE scott.emp SET sal=5000 WHERE empno=7369; 21:09:26 SQLCOMMIT; 21:09:44

8、 SQLSELECT current_scn FROM v$database; CURRENT_SCN - 1455634 21:09:53 SQLSELECT empno,sal FROM scott.emp AS OF SCN 1455600 WHERE empno=7369; EMPNO SAL - - 7369 250012.3 闪回版本查询闪回版本查询 闪回版本查询的概念 闪回版本查询操作12.3.1闪回版本查询的概念闪回版本查询的概念 闪回版本查询可以查询一条记录在一段时间内的变化情况,即一条记录的多个提交版本信息。 闪回版本查询的基本语法为: SELECT column_name

9、, FROM table_name VERSIONS BETWEEN SCN|TIMESTAMP MINVALUE|expression AND MAXVALUE|expression AS OF SCN|TIMESTAMP expression WHERE condition 在闪回版本查询的目标列中,可以使用下列伪列返回行的版本信息。 VERSIONS_STARTTIME:基于时间的版本有效范围的下界。 VERSIONS_STARTSCN:基于SCN的版本有效范围的下界。 VERSIONS_ENDTIME:基于时间的版本有效范围的上界。 VERSIONS_ENDSCN:基于SCN的版本有效

10、范围的上界。 VERSIONS_XID:操作的事务ID。 VERSIONS_OPERATION:执行操作的类型,I 表示INSERT,D 表示DELETE,U 表示UPDATE。13.3.2闪回版本查询操作闪回版本查询操作 下面是一个闪回版本查询示例。 SQLUPDATE scott.emp SET sal=6000 WHERE empno=7844; SQLUPDATE scott.emp SET sal=6000 WHERE empno=7369; SQLUPDATE scott.emp SET sal=7000 WHERE empno=7369; SQLCOMMIT; SQLUPDATE

11、 scott.emp SET sal=7500 WHERE empno=7369; SQLCOMMIT; 可以基于VERSIONS BETWEEN TIMESTAMP进行闪回版本查询: SQLSELECT versions_xid XID,versions_starttime STARTTIME, versions_endtime ENDTIME, versions_operation OPERATION, sal FROM scott.emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE empno=7369 ORDER BY

12、STARTTIME; 可以基于VERSIONS BETWEEN SCN进行闪回版本查询: SQLSELECT versions_xid XID,versions_startscn STARTSCN, versions_endscn ENDSCN, versions_operation OPERATION, sal FROM scott.emp VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE WHERE empno=7369 ORDER BY STARTSCN;12.4 闪回事务查询闪回事务查询 闪回事务查询的概念 闪回事务查询操作12.4.1闪回事务查询的

13、概念闪回事务查询的概念 闪回事务查询可以返回在一个特定事务中行的历史数据及与事务相关的元数据,或返回在一个时间段内所有事务的操作结果及事务的元数据。 在Oracle 11g数据库中,为了记录事务操作的详细信息,需要启动数据库的日志追加功能 SQLALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 可以从FLASHBACK_TRANSATION_QUERY中查看撤销表空间中存储的事务信息12.4.2闪回事务查询操作闪回事务查询操作12.5 闪回表闪回表 闪回表是将表及附属对象一起恢复到以前的某个时刻的状态。闪回表的操作实际上是对表进行DML操作。 要对表进行闪回操

14、作,需要启动表的ROW MOVEMENT特性,其方法为: ALTER TABLE table ENABLE ROW MOVEMENT; 闪回表操作的基本语法为: FLASHBACK TABLE schema.table TO SCN|TIMESTAMP expression ENABLE|DISABLE TRIGGERS12.6 闪回删除闪回删除 闪回删除的概念 闪回删除操作 12.6.1闪回删除的概念闪回删除的概念 闪回删除可恢复使用DROP TABLE语句删除的表,是一种对意外删除的表的恢复机制。 在Oracle 11g数据库中,当执行DROP TABLE操作时,并不立即回收表及其关联对象

15、的空间,而是将它们重命名后放入一个称为“回收站”的逻辑容器中保存,直到用户决定永久删除它们或存储该表的表空间存储空间不足时,表才真正被删除。 为了使用闪回删除技术,必须开启数据库的“回收站”。 启动“回收站” 要使用闪回删除功能,需要启动数据库的“回收站”,即将参数RECYCLEBIN设置为ON。在默认情况下“回收站”已启动。 SQLSHOW PARAMETER RECYCLEBIN SQLALTER SYSTEM SET RECYCLEBIN=ON; 查看“回收站” 当执行DROP TABLE操作时,表及其关联对象被命名后保存在“回收站”中,可以通过查询USER_RECYCLEBIN,DBA

16、_RECYCLEBIN视图获得被删除的表及其关联对象信息。 SQLDROP TABLE test; SQLSELECT BJECT_NAME,ORIGINAL_NAME,TYPE FROM USER_RECYCLEBIN; 12.6.2闪回删除操作闪回删除操作 闪回删除的基本语法为 FLASHBACK TABLE schema.table TO BEFORE DROP RENAME TO new_name 注意 只有采用本地管理的、非系统表空间中的表可以使用闪回删除操作。 示例 SQLCREATE TABLE example( ID NUMBER PRIMARY KEY, NAME CHAR(

17、20); SQLINSERT INTO example VALUES(1,BEFORE DROP); SQLCOMMIT; SQLDROP TABLE example; SQLFLASHBACK TABLE example TO BEFORE DROP RENAME TO new_example; SQLSELECT * FROM new_example; ID NAME - 1 BEFORE DROP12.7 闪回数据库闪回数据库 闪回数据库的概念 闪回数据库操作 12.7.1闪回数据库的概念闪回数据库的概念 闪回数据库技术是将数据库快速恢复到过去的某个时间点或SCN值时的状态,以解决由于用

18、户错误操作或逻辑数据损坏引起的问题。 闪回数据库操作不需要使用备份重建数据文件,而只需要应用闪回日志文件和归档日志文件。 为了使用数据库闪回技术,需要预先设置数据库的闪回恢复区和闪回日志保留时间。闪回恢复区用于保存数据库运行过程中产生的闪回日志文件,而闪回日志保留时间是指闪回恢复区中的闪回日志文件保留的时间,即数据库可以恢复到过去的最大时间。 闪回数据库操作的限制: 数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复。闪回数据库只能基于当前正常运行的数据文件; 闪回数据库功能启动后,如果发生数据库控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库; 不能使用闪回数据库进行数据文件收缩

19、操作; 不能使用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN,因为闪回日志文件在一定条件下被删除,而不是始终保存在闪回恢复区中。 闪回数据库功能需要满足的条件: 配置了数据库的快速恢复区。 数据库必须运行在归档模式。 在数据库加载状态下启用数据库的FLASHBACK特性。 通过设置数据库参数DB_FLASHBACK_RETENTION_TARGET,确定可以在多长时间内闪回数据库。 设置数据库的归档模式 SQL CONN SYS/TIGER AS SYSDBA SQL ARCHIVE LOG LIST; SQL SHUTDOWN IMMEDIATE SQL STARTUP

20、 MOUNT SQL ALTER DATABASE ARCHIVELOG; SQL ALTER DATABASE OPEN; SQL ALTER SYSTEM ARCHIVE LOG START; SQL ARCHIVE LOG LIST; 设置数据库的闪回恢复区 在Oracle 11g数据库安装过程中,默认情况下已设置了数据库的闪回恢复区。 可以通过参数查询数据闪回恢复区及其空间大小。 SQL SHOW PARAMETER DB_RECOVERY_FILE 启动数据库FLASHBACK特性 为了使用闪回数据库,还需要启动数据库的FLASHBACK特性,生成闪回日志文件。在默认情况下,数据库的

21、FLASHBACK特性是关闭的。 在数据库处于MOUNT状态时执行ALTER DATABAE FLASHBACK ON命令,启动数据库的FLASHBACK特性; 需要通过参数DB_FLASHBACK_RETENTION_TARGET设置闪回日志保留时间,该参数默认值为1 440分钟,即一天。 12.7.2闪回数据库操作闪回数据库操作 闪回数据库基本语法为 FLASHBACK STANDBY DATABASE database TO SCN|TIMESTAMP expression| BEFORE SCN|TIMESTAMPexpression 参数说明 STANDBY:指定执行闪回的数据库为备

22、用数据库; TO SCN:将数据库恢复到指定SCN的状态; TO TIMESTAMP:将数据库恢复到指定的时间点; TO BEFORE SCN:将数据库恢复到指定SCN的前一个SCN状态 TO BEFORE TIMESTAMP:将数据库恢复到指定时间点前一秒的状态。 查询数据库系统当前时间和当前SCN。 SQLSELECT SYSDATE FROM DUAL; SYSDATE - 2009-03-25 12:36:19 SQLSELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN - 735884 查询数据库中当前最早的闪回SCN和时间。 SQLSELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN LDEST_FLASHBACK_TI - - 730955 2009-03-25 10:26:50 改变数据库的当前

温馨提示

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

评论

0/150

提交评论