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

下载本文档

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

文档简介

1、第12章 闪回技术.本章内容闪回技术概述闪回查询技术闪回查询闪回版本查询闪回事务查询闪回错误操作技术 闪回表闪回删除闪回数据库 .本章要求了解闪回技术掌握闪回查询操作掌握闪回版本查询操作掌握闪回事务查询操作掌握闪回表操作掌握闪回删除操作掌握闪回数据库操作.12.1 闪回技术概述闪回根本概念闪回技术分类.12.1.1 根本概念Oracle 9i实现了基于回滚段的闪回查询Flashback Query技术,即从回滚段中读取一定时间内对表进展操作的数据,恢复错误的DML操作。在Oracle 10g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能

2、。闪回技术是数据库恢复技术历史上一次艰苦的提高,从根本上改动了数据恢复。采用闪回技术,可以针对行级和事务级发生过变化的数据进展恢复,减少了数据恢复的时间,而且操作简单,经过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。 .12.1.2 闪回技术分类闪回查询Flashback Query:查询过去某个时间点或某个SCN值时表中的数据信息;闪回版本查询Flashback Version Query:查询过去某个时间段或某个SCN段内表中数据的变化情况;闪回事务查询Flashback Transaction Query:查看某个事务或一切事务在过去一段时间对数据进展的修正;闪回表Fla

3、shback Table:将表恢复到过去的某个时间点或某个SCN值时的形状;闪回删除Flashback Drop:将曾经删除的表及其关联对象恢复到删除前的形状;闪回数据库Flashback Database:将数据库恢复到过去某个时间点或某个SCN值时的形状。.留意闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的;闪回删除、闪回数据库是基于Oracle 10g中的回收站Recycle Bin和闪回恢复区Flash Recovery Area特性实现的。为了运用数据库的闪回技术,必需启用撤销表空间自动管理回滚信息。假设要运用闪回删除技术和闪回数据库技术,还需求

4、启用回收站、闪回恢复区。.12.2 闪回查询技术概述闪回查询闪回版本查询闪回事务查询.闪回查询的机制闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。为了运用闪回查询功能,需求启动数据库撤销表空间来管理回滚信息。 与撤销表空间相关的参数包括 :UNDO_MANAGEMENT:指定回滚段的管理方式,假设设置为AUTO,那么采用撤销表空间自动管理回滚信息;UNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名;UNDO_RETENTIOIN:指定回滚信息的最长保管时间。 .12.2.1 闪回查询

5、闪回查询可以前往过去某个时间点曾经提交事务操作的结果。根本语法:SELECT column_name,FROM table_nameAS OF SCN|TIMESTAMP expressionWHERE condition 基于AS OF TIMESTAMP的闪回查询 基于AS OF SCN的闪回查询 . 1基于AS OF TIMESTAMP的闪回查询SQLALTER SESSION SET NLS_DATE_FORMAT=YYYY-MM- DD HH24:MI:SS;SQLSET TIME ON09:12:50 SQLSELECT empno,sal FROM scott.emp WHERE

6、 empno=7844;EMPNO SAL - 7844 1500 09:13:00 SQLUPDATE scott.emp SET sal=2000 WHERE empno=7844;09:13:07 SQLCOMMIT;09:13:12 SQLUPDATE scott.emp SET sal=2500 WHERE empno=7844;.09:14:28 SQLUPDATE scott.emp SET sal=3000 WHERE empno=7844;09:14:41 SQLCOMMIT;09:14:50 SQLUPDATE scott.emp SET sal=3500 WHERE em

7、pno=7844;09:15:43 SQLCOMMIT; 查询7844号员工的当前工资值。 09:15:48 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;EMPNO SAL - 7844 3500 .查询7844号员工前一个小时的工资值。09:16:00 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP SYSDATE-1/24 WHERE empno=7844;EMPNO SAL - 7844 1500 查询第一个事务提交,第二个事务还没有提交时7844号员工的工资。09:16:2

8、2 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2021-3-23 09:14:41,YYYY-MM-DD HH24:MI:SS) WHERE empno=7844;EMPNO SAL - 7844 2000 .查询第二个事务提交,第三个事务还没有提交时7844号员工的工资09:17:47 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2021-3-23 09:15:43,YYYY-MM-DD HH24:MI:SS) WHERE

9、empno=7844;EMPNO SAL - 7844 3000 .假设需求,可以将数据恢复到过去某个时辰的形状。09:25:23 SQLUPDATE scott.emp SET sal= ( SELECT sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2021-3-23 9:15:43,YYYY-MM-DD HH24:MI:SS) WHERE empno=7844 )WHERE empno=7844;09:25:55 SQLCOMMIT;09:26:13 SQLSELECT empno,sal FROM scott.emp WHERE emp

10、no=7844;EMPNO SAL-7844 3000.12.2.2 闪回版本查询09:27:58 SQLSELECT current_scn FROM v$database;CURRENT_SCN - 617244 09:27:58 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;EMPNO SAL-7844 300009:28:21 SQLUPDATE scott.emp SET sal=5000 WHERE empno=7844;09:29:23 SQLCOMMIT; 09:29:31 SQLUPDATE scott.emp SET

11、 sal=5500 WHERE empno=7844; .09:29:55 SQLCOMMIT;09:30:14 SQLSELECT current_scn FROM v$database;CURRENT_SCN - 61731709:30:37 SQLSELECT empno,sal FROM scott.emp AS OF SCN 617244 WHERE empno=7844;EMPNO SAL - 7844 3000 .留意现实上,Oracle 在内部都是运用SCN的,即使指定的是AS OF TIMESTAMP,Oracle 也会将其转换成SCN。系统时间与SCN之间的对应关系可以经过

12、查询SYS方式下的SMON_SCN_TIME表获得。SELECT scn, TO_CHAR(time_dp,YYYY-MM- DD HH24:MI:SS) time_dp FROM sys.smon_scn_time;.利用闪回版本查询,可以查看一行记录在一段时间内的变化情况,即一行记录的多个提交的版本信息,从而可以实现数据的行级恢复。根本语法SELECT column_name, FROM table_nameVERSIONS BETWEEN SCN|TIMESTAMPMINVALUE|expression AND MAXVALUE|expressionAS OF SCN|TIMESTAMP

13、 expressionWHERE condition参数阐明VERSIONS BETWEEN:用于指定闪回版本查询时查询的时间段或SCN段;AS OF:用于指定闪回查询时查询的时间点或SCN。.在闪回版本查询的目的列中,可以运用以下几个伪列前往版本信息。VERSIONS_STARTTIME:基于时间的版本有效范围的下界;VERSIONS_STARTSCN:基于SCN的版本有效范围的下界;VERSIONS_ENDTIME:基于时间的版本有效范围的上界;VERSIONS_ENDSCN:基于SCN的版本有效范围的上界;VERSIONS_XID:操作的事务ID;VERSIONS_OPERATION:执

14、行操作的类型,I 表示INSERT,D 表示DELETE,U 表示UPDATE。.SQLUPDATE scott.emp SET sal=6000 WHERE empno=7844;SQLUPDATE scott.emp SET sal=6500 WHERE empno=7844;SQLUPDATE scott.emp SET sal=7000 WHERE empno=7844;SQLCOMMIT;SQLUPDATE scott.emp SET sal=7500 WHERE empno=7844;SQLCOMMIT; SQLSET LINESIZE 600SQLCOL STARTTIME FO

15、RMAT A30SQLCOL ENDTIME FORMAT A30SQLCOL OPERATION FORMAT A10 .基于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=7844 ORDE

16、R BY 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=7844 ORDER BY STARTSCN;.查询当前7844号员工的工资。SQLSELECT empno,sal FROM scott

17、.emp WHERE empno=7844;EMPNO SAL - 7844 7500 .假设需求,可以将数据恢复到过去某个时辰的形状。SQLUPDATE scott.emp SET sal=( SELECT sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2021-3-23 10:25:03,YYYY- MM-DD HH24:MI:SS) WHERE empno=7844 ) WHERE empno=7844;SQLCOMMIT;SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;EMPNO

18、SAL - 7844 6000 .留意在进展闪回版本查询时,可以同时运用VERSIONS 短语和AS OF 短语。AS OF短语决议了进展查询的时间点或SCN,VERSIONS 短语决议了可见的行的版本信息。对于在VERSIONS BETWEEN下界之前开场的事务,或在AS OF指定的时间或SCN之后完成的事务,系统前往的版本信息为NULL。.将VERSIONS BWTWEEN TIMESTAMP与AS OF TIMESTAMP配合运用。SQLSELECT versions_xid XID, versions_starttime STARTTIME, versions_endtime ENDT

19、IME, versions_operation OPERATION, sal FROM scott.emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE AS OF TIMESTAMP TO_TIMESTAMP(2021-3- 23 10:24:40,YYYY-MM-DD HH24:MI:SS) WHERE empno=7844 ORDER BY STARTTIME; .将VERSIONS BWTWEEN SCN与AS OF SCN配合运用SQLSELECT versions_xid XID, versions_startscn STARTS

20、CN, versions_endscn ENDSCN, versions_operation OPERATION, sal FROM scott.emp VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE AS OF SCN 620045 WHERE empno=7844 ORDER BY STARTSCN;.12.2.3 闪回事务查询闪回事务查询提供了一种查看事务级数据库变化的方法。可以从FLASHBACK_TRANSATION_QUERY中查看回滚段中存储的事务信息。 例如: SQLSELECT operation,undo_sql,table_name

21、FROM FLASHBACK_TRANSACTION_QUERY;SQLSELECT operation,undo_sql,table_name FROM FLASHBACK_TRANSACTION_QUERY WHERE xid=HEXTORAW(04001E002E010000); .通常,将闪回事务查询与闪回版本查询相结合,先利用闪回版本查询获取事务ID及事务操作结果,然后利用事务ID查询事务的详细操作信息。 SQLSELECT versions_xid,sal FROM scott.emp VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE WHERE

22、 empno=7844; SQLSELECT operation,undo_sql FROM FLASHBACK_TRANSACTION_QUERY WHERE xid=HEXTORAW(04001E002E010000);.12.3 闪回错误操作技术闪回表闪回删除闪回数据库.12.3.1 闪回表概述闪回表是将表恢复到过去的某个时间点的形状,为DBA提供了一种在线、快速、便利地恢复对表进展的修正、删除、插入等错误的操作。与闪回查询不同,闪回查询只是得到表在过去某个时间点上的快照,并不改动表的当前形状,而闪回表那么是将表及附属对象一同恢复到以前的某个时间点。利用闪回表技术恢复表中数据的过程,实践

23、上是对表进展DML操作的过程。Oracle自动维护与表相关联的索引、触发器、约束等,不需求DBA参与。.为了运用数据库闪回表功能,必需满足以下条件:用户具有FLASHBACK ANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限;用户具有所操作表的SELECT,INSERT,DELETE,ALTER对象权限;数据库采用撤销表空间进展回滚信息的自动管理,合理设置UNDO_RETENTIOIN参数值,保证指定的时间点或SCN对应信息保管在撤销表空间中;启动被操作表的ROW MOVEMENT特性,可以采用以下方式进展:ALTER TABLE table ENABLE ROW MO

24、VEMENT;.闪回表操作的根本语法为FLASHBACK TABLE schema.table TO SCN|TIMESTAMP expressionENABLE|DISABLE TRIGGERS参数阐明SCN:将表恢复到指定的SCN时形状;TIMESTAMP:将表恢复到指定的时间点;ENABLE|DIABLE TRIGGER:在恢复表中数据的过程中,表上的触发器是激活还是禁用默以为禁用。留意SYS用户或以AS SYSDBA身份登录的用户不能执行闪回表操作。.SQLCONN scott/tigerSQLSET TIME ON09:14:01 SQLCREATE TABLE test( ID N

25、UMBER PRIMARY KEY , name CHAR(20);09:14:12 SQLINSERT INTO test VALUES(1,ZHANG);09:14:24 SQLCOMMIT;09:14:32 SQLINSERT INTO test VALUES(2,ZHAO);09:14:39 SQLCOMMIT;09:14:43 SQLINSERT INTO test VALUES(3,WANG);09:14:49 SQLCOMMIT;.09:16:31 SQLSELECT current_scn FROM v$database;CURRENT_SCN - 67537109:16:50

26、 SQLUPDATE test SET name=LIU WHERE id=1;09:17:02 SQLCOMMIT;09:17:05 SQLSELECT * FROM test; ID NAME - 1 LIU 2 ZHAO 3 WANG .09:17:13 SQLDELETE FROM test WHERE id=3;09:17:51 SQLCOMMIT;09:18:02 SQLSELECT * FROM test;ID NAME - 1 LIU 2 ZHAO .启动test表的ROW MOVEMENT特性09:19:33 SQLALTER TABLE test ENABLE ROW MO

27、VEMENT;将test表恢复到2021-3-24 09:17:51时辰的形状09:20:06 SQLFLASHBACK TABLE test TO TIMESTAMP TO_TIMESTAMP(2021-3-24 09:17:51, YYYY-MM-DD HH24:MI:SS); 09:20:18 SQLSELECT * FROM test;ID NAME - 1 LIU 2 ZHAO 3 WANG .将test表恢复到SCN为675371的形状09:20:25 SQLFLASHBACK TABLE test TO SCN 675371;09:20:50 SQLSELECT * FROM t

28、est;ID NAME - 1 ZHANG 2 ZHAO 3 WANG .12.3.2 闪回删除闪回删除概述 回收站管理 闪回删除操作 .1闪回删除概述 闪回删除可恢复运用DROP TABLE语句删除的表,是一种对不测删除的表的恢复机制。闪回删除功能的实现主要是经过Oracle 10g数据库中的“回收站Recycle Bin技术实现的。 在Oracle 10g数据库中,当执行DROP TABLE操作时,并不立刻回收表及其关联对象的空间,而是将它们重命名后放入一个称为“回收站的逻辑容器中保管,直到用户决议永久删除它们或存储该表的表空间存储空间缺乏时,表才真正被删除。 为了运用闪回删除技术,必需开

29、启数据库的“回收站。 .2回收站管理 启动“回收站 要运用闪回删除功能,需求启动数据库的“回收站,即将参数RECYCLEBIN设置为ON。在默许情况下“回收站已启动。 SQLSHOW PARAMETER RECYCLEBIN SQLALTER SYSTEM SET RECYCLEBIN=ON;.查看“回收站 当执行DROP TABLE操作时,表及其关联对象被命名后保管在“回收站中,可以经过查询USER_RECYCLEBIN,DBA_RECYCLEBIN视图获得被删除的表及其关联对象信息。SQLDROP TABLE test;SQLSELECT BJECT_NAME,ORIGINAL_NAME,

30、TYPE FROM USER_RECYCLEBIN; .假设在删除表时运用了PURGE短语,那么表及其关联对象被直接释放,空间被回收,相关信息不会进入“回收站中。SQLCREATE TABLE test_purge( ID NUMBER PRIMARY KEY , name CHAR(20) );SQLDROP TABLE test_purge PURGE;SQLSELECT BJECT_NAME,ORIGINAL_NAME,TYPE FROM USER_RECYCLEBIN;.去除回收站由于被删除表及其关联对象的信息保管在“回收站中,其存储空间并没有释放,因此需求定期清空“回收站,或去除“回

31、收站中没用的对象表、索引、表空间,释放其所占的磁盘空间。去除回收站语法为: PURGE TABLE table | INDEX index| RECYCLEBIN | DBA_RECYCLEBIN| TABLESPACE tablespace USER user .参数阐明TABLE:从“回收站中去除指定的表,并回收其磁盘空间;INDEX:从“回收站中去除指定的索引,并回收其磁盘空间;RECYCLEBIN:清空用户“回收站,并回收一切对象的磁盘空间;DBA_RECYCLEBIN:清空整个数据库系统的“回收站,只需具有SYSDBA权限的用户才可以运用;TABLESPACE:去除“回收站中指定的表

32、空间,并回收磁盘空间;USER:去除“回收站中指定表空间中特定用户的对象,并回收磁盘空间。.例如:SQLPURGE INDEX BIN$i+nXRT6iTp6Gb3zoP/R5Fw=$0;SQLPURSE TABLE TEST;SQLPURGE RECYCLEBIN;.3闪回删除操作闪回删除的根本语法为FLASHBACK TABLE schema.table TO BEFORE DROP RENAME TO table留意只需采用本地管理的、非系统表空间中的表可以运用闪回删除操作。 .例如SQLCREATE TABLE example( ID NUMBER PRIMARY KEY, NAME

33、CHAR(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 DROP.12.3.3 闪回数据库闪回数据库概述 闪回数据库的限制启动闪回数据库的条件 闪回数据库操作 .1闪回数据库概述闪回数据库技术是将数据库快速恢复到过去的某个时间点或SCN值时的形状,以处理由于用

34、户错误操作或逻辑数据损坏引起的问题。 闪回数据库操作不需求运用备份重建数据文件,而只需求运用闪回日志文件和归档日志文件。为了运用数据库闪回技术,需求预先设置数据库的闪回恢复区和闪回日志保管时间。闪回恢复区用于保管数据库运转过程中产生的闪回日志文件,而闪回日志保管时间是指闪回恢复区中的闪回日志文件保管的时间,即数据库可以恢复到过去的最大时间。.2闪回数据库的限制闪回数据库操作的限制:数据文件损坏或丧失等介质缺点不能运用闪回数据库进展恢复。闪回数据库只能基于当前正常运转的数据文件;闪回数据库功能启动后,假设发生数据库控制文件重建或利用备份恢复控制文件,那么不能运用闪回数据库;不能运用闪回数据库进展

35、数据文件收缩操作;不能运用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN,由于闪回日志文件在一定条件下被删除,而不是一直保管在闪回恢复区中。.3启动闪回数据库的条件闪回数据库功能需求满足的条件:数据库必需处于归档方式ARCHIVELOG;数据库设置了闪回恢复区;数据库启用了FLASHBACK DATABASE特性。.设置数据库的归档方式 SQL CONN SYS/TIGER AS SYSDBASQL ARCHIVE LOG LIST; SQL SHUTDOWN IMMEDIATESQL STARTUP MOUNTSQL ALTER DATABASE ARCHIVELOG;S

36、QL ALTER DATABASE OPEN;SQL ALTER SYSTEM ARCHIVE LOG START;SQL ARCHIVE LOG LIST; .设置数据库的闪回恢复区 在Oracle 10g数据库安装过程中,默许情况下已设置了数据库的闪回恢复区。可以经过参数查询数据闪回恢复区及其空间大小。SQL SHOW PARAMETER DB_RECOVERY_FILE.启动数据库FLASHBACK特性为了运用闪回数据库,还需求启动数据库的FLASHBACK特性,生成闪回日志文件。在默许情况下,数据库的FLASHBACK特性是封锁的。在数据库处于MOUNT形状时执行ALTER DATABAE FLASHBACK ON命令,启动数据库的FLASHBACK特性;可以在数据库处于MOUNT形状时执行ALTER DATABAE FLASHBACK OFF命令,封锁数据库的FLASHBACK特性。需求经过参数DB_FLASHBACK_RETENTION_TARGET设置闪回日志保管时间,该参数默许值为1 440分钟,即一天。 .例如SQLSHUTDOWN IMMEDIATESQLSTARTUP MOUNTSQLALTER DATABASE FLASHBACK ON;SQLALTER DATABASE OPEN;S

温馨提示

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

评论

0/150

提交评论