Oracle-10g数据库基础教程之闪回技术7907.pptx
《Oracle-10g数据库基础教程之闪回技术7907.pptx》由会员分享,可在线阅读,更多相关《Oracle-10g数据库基础教程之闪回技术7907.pptx(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle10g数据库基础教程2009第第14章章 闪回技术闪回技术Oracle10g数据库基础教程2009本章内容本章内容p闪回技术概述p闪回查询技术n闪回查询闪回查询n闪回版本查询闪回版本查询n闪回事务查询闪回事务查询p闪回错误操作技术n闪回表闪回表n闪回删除闪回删除n闪回数据库闪回数据库 Oracle10g数据库基础教程2009本章要求本章要求p了解闪回技术p掌握闪回查询操作p掌握闪回版本查询操作p掌握闪回事务查询操作p掌握闪回表操作p掌握闪回删除操作p掌握闪回数据库操作Oracle10g数据库基础教程200914.1 闪回技术概述闪回技术概述p闪回基本概念p闪回技术分类Oracle1
2、0g数据库基础教程200914.1.1 基本概念基本概念pOracle9i实现了基于回滚段的闪回查询(FlashbackQuery)技术,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。p在Oracle10g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能。p闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。p采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。Oracle10g数据库基础教程
3、200914.1.2 闪回技术分类闪回技术分类p闪回查询(FlashbackQuery):查询过去某个时间点或某个SCN值时表中的数据信息;p闪回版本查询(FlashbackVersionQuery):查询过去某个时间段或某个SCN段内表中数据的变化情况;p闪回事务查询(FlashbackTransactionQuery):查看某个事务或所有事务在过去一段时间对数据进行的修改;p闪回表(FlashbackTable):将表恢复到过去的某个时间点或某个SCN值时的状态;p闪回删除(FlashbackDrop):将已经删除的表及其关联对象恢复到删除前的状态;p闪回数据库(FlashbackData
4、base):将数据库恢复到过去某个时间点或某个SCN值时的状态。Oracle10g数据库基础教程2009p注意n闪回查询、闪回版本查询、闪回事务查询以及闪回表闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的;主要是基于撤销表空间中的回滚信息实现的;n闪回删除、闪回数据库是基于闪回删除、闪回数据库是基于Oracle 10g中的回收中的回收站(站(Recycle Bin)和闪回恢复区()和闪回恢复区(Flash Recovery Area)特性实现的。)特性实现的。n为了使用数据库的闪回技术,必须启用撤销表空间自为了使用数据库的闪回技术,必须启用撤销表空间自动管
5、理回滚信息。动管理回滚信息。n如果要使用闪回删除技术和闪回数据库技术,还需要如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。启用回收站、闪回恢复区。Oracle10g数据库基础教程200914.2 闪回查询技术闪回查询技术p概述p闪回查询p闪回版本查询p闪回事务查询Oracle10g数据库基础教程2009p闪回查询的机制n闪回查询是指利用数据库回滚段存放的信息查看指定闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。数据的变化情况,或某个事
6、务对该表的操作信息等。n为了使用闪回查询功能,需要启动数据库撤销表空间为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。来管理回滚信息。n与撤销表空间相关的参数包括与撤销表空间相关的参数包括:pUNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息;pUNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名;pUNDO_RETENTIOIN:指定回滚信息的最长保留时间。Oracle10g数据库基础教程200914.2.1 闪回查询闪回查询p闪回查询可以返回过去某个时间点已经提交事务操作的结果。p基本语法:nSELEC
7、T column_name,nFROM table_namenAS OF SCN|TIMESTAMP expressionnWHERE condition p基于ASOFTIMESTAMP的闪回查询p基于ASOFSCN的闪回查询Oracle10g数据库基础教程2009(1)基于)基于AS OF TIMESTAMP的闪回查询的闪回查询pSQLALTERSESSIONSETNLS_DATE_FORMAT=YYYY-MM-DDHH24:MI:SS;pSQLSETTIMEONp09:12:50SQLSELECTempno,salFROMscott.empWHEREempno=7844;pEMPNOSA
8、L-78441500p09:13:00SQLUPDATEscott.empSETsal=2000WHEREempno=7844;p09:13:07SQLCOMMIT;p09:13:12SQLUPDATEscott.empSETsal=2500WHEREempno=7844;Oracle10g数据库基础教程2009p09:14:28SQLUPDATEscott.empSETsal=3000WHEREempno=7844;p09:14:41SQLCOMMIT;p09:14:50SQLUPDATEscott.empSETsal=3500WHEREempno=7844;p09:15:43SQLCOMM
9、IT;p查询7844号员工的当前工资值。p09:15:48SQLSELECTempno,salFROMscott.empWHEREempno=7844;pEMPNOSAL-78443500Oracle10g数据库基础教程2009p查询7844号员工前一个小时的工资值。n09:16:00SQLSELECTempno,salFROMscott.empASOFTIMESTAMPSYSDATE-1/24WHEREempno=7844;nEMPNOSAL-78441500p查询第一个事务提交,第二个事务还没有提交时7844号员工的工资。n09:16:22SQLSELECTempno,salFROMsco
10、tt.empASOFTIMESTAMPTO_TIMESTAMP(2009-3-2309:14:41,YYYY-MM-DDHH24:MI:SS)WHEREempno=7844;nEMPNOSAL-78442000 Oracle10g数据库基础教程2009p查询第二个事务提交,第三个事务还没有提交时7844号员工的工资n09:17:47SQLSELECTempno,salFROMscott.empASOFTIMESTAMPTO_TIMESTAMP(2009-3-2309:15:43,YYYY-MM-DDHH24:MI:SS)WHEREempno=7844;nEMPNOSAL-78443000Ora
11、cle10g数据库基础教程2009p如果需要,可以将数据恢复到过去某个时刻的状态。n09:25:23SQLUPDATEscott.empSETsal=(SELECTsalFROMscott.empASOFTIMESTAMPTO_TIMESTAMP(2009-3-239:15:43,YYYY-MM-DDHH24:MI:SS)WHEREempno=7844)WHEREempno=7844;n09:25:55SQLCOMMIT;n09:26:13SQLSELECTempno,salFROMscott.empWHEREempno=7844;nEMPNOSALn-n78443000Oracle10g数据
12、库基础教程200914.2.2 闪回版本查询闪回版本查询p09:27:58SQLSELECTcurrent_scnFROMv$database;pCURRENT_SCNp-p617244p09:27:58SQLSELECTempno,salFROMscott.empWHEREempno=7844;pEMPNOSALp-p78443000p09:28:21SQLUPDATEscott.empSETsal=5000WHEREempno=7844;p09:29:23SQLCOMMIT;p09:29:31SQLUPDATEscott.empSETsal=5500WHEREempno=7844;Orac
13、le10g数据库基础教程2009p09:29:55SQLCOMMIT;p09:30:14SQLSELECTcurrent_scnFROMv$database;pCURRENT_SCN-617317p09:30:37SQLSELECTempno,salFROMscott.empASOFSCN617244WHEREempno=7844;pEMPNOSAL-78443000Oracle10g数据库基础教程2009p注意n事实上,事实上,Oracle 在内部都是使用在内部都是使用SCN的,即使指定的,即使指定的是的是AS OF TIMESTAMP,Oracle 也会将其转换也会将其转换成成SCN。系统
14、时间与。系统时间与SCN之间的对应关系可以通过查之间的对应关系可以通过查询询SYS模式下的模式下的SMON_SCN_TIME表获得。表获得。nSELECT scn,TO_CHAR(time_dp,YYYY-MM-DD HH24:MI:SS)time_dp FROM sys.smon_scn_time;Oracle10g数据库基础教程2009p利用闪回版本查询,可以查看一行记录在一段时间内的变化情况,即一行记录的多个提交的版本信息,从而可以实现数据的行级恢复。p基本语法nSELECT column_name,FROM table_namenVERSIONS BETWEEN SCN|TIMESTA
15、MPnMINVALUE|expression AND MAXVALUE|expressionnAS OF SCN|TIMESTAMP expressionnWHERE conditionp参数说明nVERSIONS BETWEEN:用于指定闪回版本查询时查询的时间:用于指定闪回版本查询时查询的时间段或段或SCN段;段;nAS OF:用于指定闪回查询时查询的时间点或:用于指定闪回查询时查询的时间点或SCN。Oracle10g数据库基础教程2009p在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息。nVERSIONS_STARTTIME:基于时间的版本有效范围的下界;基于时间的版本有效范
16、围的下界;nVERSIONS_STARTSCN:基于基于SCN的版本有效范围的下界;的版本有效范围的下界;nVERSIONS_ENDTIME:基于时间的版本有效范围的上界;:基于时间的版本有效范围的上界;nVERSIONS_ENDSCN:基于:基于SCN的版本有效范围的上界;的版本有效范围的上界;nVERSIONS_XID:操作的事务:操作的事务ID;nVERSIONS_OPERATION:执行操作的类型,:执行操作的类型,I 表示表示INSERT,D 表示表示DELETE,U 表示表示UPDATE。Oracle10g数据库基础教程2009pSQLUPDATEscott.empSETsal=6
17、000WHEREempno=7844;pSQLUPDATEscott.empSETsal=6500WHEREempno=7844;pSQLUPDATEscott.empSETsal=7000WHEREempno=7844;pSQLCOMMIT;pSQLUPDATEscott.empSETsal=7500WHEREempno=7844;pSQLCOMMIT;pSQLSETLINESIZE600pSQLCOLSTARTTIMEFORMATA30pSQLCOLENDTIMEFORMATA30pSQLCOLOPERATIONFORMATA10Oracle10g数据库基础教程2009p基于VERSION
18、SBETWEENTIMESTAMP的闪回版本查询。nSQLSELECT 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 ORDER BY STARTTIME;Oracle10g数据库基础教程2009p基于VERSIONSBETWEENSCN的闪回版本查询。nSQLSELECT
19、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;Oracle10g数据库基础教程2009p查询当前7844号员工的工资。nSQLSELECT empno,sal FROM scott.emp WHERE empno=7844;nEMPNO SAL -7844 7
20、500 Oracle10g数据库基础教程2009p如果需要,可以将数据恢复到过去某个时刻的状态。nSQLUPDATE scott.emp SET sal=(SELECT sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2009-3-23 10:25:03,YYYY-MM-DD HH24:MI:SS)WHERE empno=7844 )WHERE empno=7844;nSQLCOMMIT;nSQLSELECT empno,sal FROM scott.emp WHERE empno=7844;nEMPNO SAL -7844 6000 Oracl
21、e10g数据库基础教程2009p注意n在进行闪回版本查询时,可以同时使用在进行闪回版本查询时,可以同时使用VERSIONS 短语和短语和AS OF 短语。短语。AS OF短语决定了进行查询的短语决定了进行查询的时间点或时间点或SCN,VERSIONS 短语决定了可见的行的短语决定了可见的行的版本信息。对于在版本信息。对于在VERSIONS BETWEEN下界之前下界之前开始的事务,或在开始的事务,或在AS OF指定的时间或指定的时间或SCN之后完成之后完成的事务,系统返回的版本信息为的事务,系统返回的版本信息为NULL。Oracle10g数据库基础教程2009p将VERSIONSBWTWEEN
22、TIMESTAMP与ASOFTIMESTAMP配合使用。nSQLSELECT versions_xid XID,versions_starttime STARTTIME,versions_endtime ENDTIME,versions_operation OPERATION,sal FROM scott.emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE AS OF TIMESTAMP TO_TIMESTAMP(2009-3-23 10:24:40,YYYY-MM-DD HH24:MI:SS)WHERE empno=7844 ORDER
23、BY STARTTIME;Oracle10g数据库基础教程2009p将VERSIONSBWTWEENSCN与ASOFSCN配合使用nSQLSELECT versions_xid XID,versions_startscn STARTSCN,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;Oracle10g数据库基础
24、教程200914.2.3 闪回事务查询闪回事务查询p闪回事务查询提供了一种查看事务级数据库变化的方法。p可以从FLASHBACK_TRANSATION_QUERY中查看回滚段中存储的事务信息。p例如:nSQLSELECT operation,undo_sql,table_name FROM FLASHBACK_TRANSACTION_QUERY;nSQLSELECT operation,undo_sql,table_name FROM FLASHBACK_TRANSACTION_QUERY WHERE xid=HEXTORAW(04001E002E010000);Oracle10g数据库基础教
25、程2009p通常,将闪回事务查询与闪回版本查询相结合,先利用闪回版本查询获取事务ID及事务操作结果,然后利用事务ID查询事务的详细操作信息。nSQLSELECT versions_xid,sal FROM scott.emp VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE WHERE empno=7844;nSQLSELECT operation,undo_sql FROM FLASHBACK_TRANSACTION_QUERY WHERE xid=HEXTORAW(04001E002E010000);Oracle10g数据库基础教程200914.3 闪回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 10 数据库 基础教程 技术 7907
限制150内