Oracle第12章闪回技术8168.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Oracle第12章闪回技术8168.pptx》由会员分享,可在线阅读,更多相关《Oracle第12章闪回技术8168.pptx(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle10g 数据库基础教程第第12章章 闪回技术闪回技术Oracle 10g 数据库基础教程本章内容本章内容p闪回技术概述p闪回查询技术n闪回查询闪回查询n闪回版本查询闪回版本查询n闪回事务查询闪回事务查询p闪回错误操作技术 n闪回表闪回表n闪回删除闪回删除n闪回数据库闪回数据库 Oracle 10g 数据库基础教程本章要求本章要求p了解闪回技术p掌握闪回查询操作p掌握闪回版本查询操作p掌握闪回事务查询操作p掌握闪回表操作p掌握闪回删除操作p掌握闪回数据库操作Oracle 10g 数据库基础教程12.1 闪回技术概述闪回技术概述p闪回基本概念p闪回技术分类Oracle 10g 数据库基
2、础教程12.1.1 基本概念基本概念pOracle 9i实现了基于回滚段的闪回查询(Flashback Query)技术,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。p在Oracle 10g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能。p闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。p采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。Oracle 10g 数据库基础教程12.1.
3、2 闪回技术分类闪回技术分类p闪回查询(Flashback Query):查询过去某个时间点或某个SCN值时表中的数据信息;p闪回版本查询(Flashback Version Query):查询过去某个时间段或某个SCN段内表中数据的变化情况;p闪回事务查询(Flashback Transaction Query):查看某个事务或所有事务在过去一段时间对数据进行的修改;p闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时的状态;p闪回删除(Flashback Drop):将已经删除的表及其关联对象恢复到删除前的状态;p闪回数据库(Flashback Datab
4、ase):将数据库恢复到过去某个时间点或某个SCN值时的状态。Oracle 10g 数据库基础教程p注意n闪回查询、闪回版本查询、闪回事务查询以及闪回表闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的;主要是基于撤销表空间中的回滚信息实现的;n闪回删除、闪回数据库是基于闪回删除、闪回数据库是基于Oracle 10g中的回收中的回收站(站(Recycle Bin)和闪回恢复区()和闪回恢复区(Flash Recovery Area)特性实现的。)特性实现的。n为了使用数据库的闪回技术,必须启用撤销表空间自为了使用数据库的闪回技术,必须启用撤销表空间自动管理回滚
5、信息。动管理回滚信息。n如果要使用闪回删除技术和闪回数据库技术,还需要如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。启用回收站、闪回恢复区。Oracle 10g 数据库基础教程12.2 闪回查询技术闪回查询技术p概述p闪回查询p闪回版本查询p闪回事务查询Oracle 10g 数据库基础教程p闪回查询的机制n闪回查询是指利用数据库回滚段存放的信息查看指定闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。数据的变化情况,或某个事务对该表的操作
6、信息等。n为了使用闪回查询功能,需要启动数据库撤销表空间为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。来管理回滚信息。n与撤销表空间相关的参数包括与撤销表空间相关的参数包括:pUNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息;pUNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名;pUNDO_RETENTIOIN:指定回滚信息的最长保留时间。Oracle 10g 数据库基础教程12.2.1 闪回查询闪回查询p闪回查询可以返回过去某个时间点已经提交事务操作的结果。p基本语法:nSELECT column_
7、name,nFROM table_namenAS OF SCN|TIMESTAMP expressionnWHERE condition p基于AS OF TIMESTAMP的闪回查询 p基于AS OF SCN的闪回查询 Oracle 10g 数据库基础教程(1)基于)基于AS OF TIMESTAMP的闪回查询的闪回查询pSQLALTER SESSION SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS;pSQLSET TIME ONp09:12:50 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;p
8、EMPNO SAL -7844 1500 p09:13:00 SQLUPDATE scott.emp SET sal=2000 WHERE empno=7844;p09:13:07 SQLCOMMIT;p09:13:12 SQLUPDATE scott.emp SET sal=2500 WHERE empno=7844;Oracle 10g 数据库基础教程p09:14:28 SQLUPDATE scott.emp SET sal=3000 WHERE empno=7844;p09:14:41 SQLCOMMIT;p09:14:50 SQLUPDATE scott.emp SET sal=350
9、0 WHERE empno=7844;p09:15:43 SQLCOMMIT;p查询7844号员工的当前工资值。p09:15:48 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;pEMPNO SAL -7844 3500 Oracle 10g 数据库基础教程p查询7844号员工前一个小时的工资值。n09:16:00 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP SYSDATE-1/24 WHERE empno=7844;nEMPNO SAL -7844 1500 p查询第一个事务提
10、交,第二个事务还没有提交时7844号员工的工资。n09:16:22 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2009-3-23 09:14:41,YYYY-MM-DD HH24:MI:SS)WHERE empno=7844;nEMPNO SAL -7844 2000 Oracle 10g 数据库基础教程p查询第二个事务提交,第三个事务还没有提交时7844号员工的工资n09:17:47 SQLSELECT empno,sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAM
11、P(2009-3-23 09:15:43,YYYY-MM-DD HH24:MI:SS)WHERE empno=7844;nEMPNO SAL -7844 3000 Oracle 10g 数据库基础教程p如果需要,可以将数据恢复到过去某个时刻的状态。n09:25:23 SQLUPDATE scott.emp SET sal=(SELECT sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAMP(2009-3-23 9:15:43,YYYY-MM-DD HH24:MI:SS)WHERE empno=7844 )WHERE empno=7844;n09:25:
12、55 SQLCOMMIT;n09:26:13 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;nEMPNO SALn-n7844 3000Oracle 10g 数据库基础教程12.2.2 闪回版本查询闪回版本查询p09:27:58 SQLSELECT current_scn FROM v$database;pCURRENT_SCN p-p617244 p09:27:58 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844;pEMPNO SALp-p7844 3000p09:28:21 S
13、QLUPDATE scott.emp SET sal=5000 WHERE empno=7844;p09:29:23 SQLCOMMIT;p09:29:31 SQLUPDATE scott.emp SET sal=5500 WHERE empno=7844;Oracle 10g 数据库基础教程p09:29:55 SQLCOMMIT;p09:30:14 SQLSELECT current_scn FROM v$database;pCURRENT_SCN -617317p09:30:37 SQLSELECT empno,sal FROM scott.emp AS OF SCN 617244 WHE
14、RE empno=7844;pEMPNO SAL -7844 3000 Oracle 10g 数据库基础教程p注意n事实上,事实上,Oracle 在内部都是使用在内部都是使用SCN的,即使指定的,即使指定的是的是AS OF TIMESTAMP,Oracle 也会将其转换也会将其转换成成SCN。系统时间与。系统时间与SCN之间的对应关系可以通过查之间的对应关系可以通过查询询SYS模式下的模式下的SMON_SCN_TIME表获得。表获得。nSELECT scn,TO_CHAR(time_dp,YYYY-MM-DD HH24:MI:SS)time_dp FROM sys.smon_scn_time;
15、Oracle 10g 数据库基础教程p利用闪回版本查询,可以查看一行记录在一段时间内的变化情况,即一行记录的多个提交的版本信息,从而可以实现数据的行级恢复。p基本语法nSELECT column_name,FROM table_namenVERSIONS BETWEEN SCN|TIMESTAMPnMINVALUE|expression AND MAXVALUE|expressionnAS OF SCN|TIMESTAMP expressionnWHERE conditionp参数说明nVERSIONS BETWEEN:用于指定闪回版本查询时查询的时间:用于指定闪回版本查询时查询的时间段或段或
16、SCN段;段;nAS OF:用于指定闪回查询时查询的时间点或:用于指定闪回查询时查询的时间点或SCN。Oracle 10g 数据库基础教程p在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息。nVERSIONS_STARTTIME:基于时间的版本有效范围的下界基于时间的版本有效范围的下界;nVERSIONS_STARTSCN:基于基于SCN的版本有效范围的下界的版本有效范围的下界;nVERSIONS_ENDTIME:基于时间的版本有效范围的上界;:基于时间的版本有效范围的上界;nVERSIONS_ENDSCN:基于:基于SCN的版本有效范围的上界;的版本有效范围的上界;nVERSION
17、S_XID:操作的事务:操作的事务ID;nVERSIONS_OPERATION:执行操作的类型,:执行操作的类型,I 表示表示INSERT,D 表示表示DELETE,U 表示表示UPDATE。Oracle 10g 数据库基础教程pSQLUPDATE scott.emp SET sal=6000 WHERE empno=7844;pSQLUPDATE scott.emp SET sal=6500 WHERE empno=7844;pSQLUPDATE scott.emp SET sal=7000 WHERE empno=7844;pSQLCOMMIT;pSQLUPDATE scott.emp S
18、ET sal=7500 WHERE empno=7844;pSQLCOMMIT;pSQLSET LINESIZE 600pSQLCOL STARTTIME FORMAT A30pSQLCOL ENDTIME FORMAT A30pSQLCOL OPERATION FORMAT A10 Oracle 10g 数据库基础教程p基于VERSIONS BETWEEN TIMESTAMP的闪回版本查询。nSQLSELECT versions_xid XID,versions_starttime STARTTIME,versions_endtime ENDTIME,versions_operation O
19、PERATION,sal FROM scott.emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE empno=7844 ORDER BY STARTTIME;Oracle 10g 数据库基础教程p基于VERSIONS BETWEEN SCN的闪回版本查询。nSQLSELECT versions_xid XID,versions_startscn STARTSCN,versions_endscn ENDSCN,versions_operation OPERATION,sal FROM scott.emp VERSIONS BET
20、WEEN SCN MINVALUE AND MAXVALUE WHERE empno=7844 ORDER BY STARTSCN;Oracle 10g 数据库基础教程p查询当前7844号员工的工资。nSQLSELECT empno,sal FROM scott.emp WHERE empno=7844;nEMPNO SAL -7844 7500 Oracle 10g 数据库基础教程p如果需要,可以将数据恢复到过去某个时刻的状态。nSQLUPDATE scott.emp SET sal=(SELECT sal FROM scott.emp AS OF TIMESTAMP TO_TIMESTAM
21、P(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 Oracle 10g 数据库基础教程p注意n在进行闪回版本查询时,可以同时使用在进行闪回版本查询时,可以同时使用VERSIONS 短语和短语和AS OF 短语。短语。AS OF短语决定了进行查询的短语决定了进行查询的时间点或时间点或SCN,VERSIONS 短语决定了可见
22、的行的短语决定了可见的行的版本信息。对于在版本信息。对于在VERSIONS BETWEEN下界之前下界之前开始的事务,或在开始的事务,或在AS OF指定的时间或指定的时间或SCN之后完成之后完成的事务,系统返回的版本信息为的事务,系统返回的版本信息为NULL。Oracle 10g 数据库基础教程p将VERSIONS BWTWEEN TIMESTAMP与AS OF TIMESTAMP配合使用。nSQLSELECT versions_xid XID,versions_starttime STARTTIME,versions_endtime ENDTIME,versions_operation OP
23、ERATION,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 BY STARTTIME;Oracle 10g 数据库基础教程p将VERSIONS BWTWEEN SCN与AS OF SCN配合使用nSQLSELECT versions_xid XID,versions_startscn STARTSCN,versions_
24、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;Oracle 10g 数据库基础教程12.2.3 闪回事务查询闪回事务查询p闪回事务查询提供了一种查看事务级数据库变化的方法。p可以从FLASHBACK_TRANSATION_QUERY中查看回滚段中存储的事务信息。p例如:nSQLSELECT operation,undo_sql,t
25、able_name FROM FLASHBACK_TRANSACTION_QUERY;nSQLSELECT operation,undo_sql,table_name FROM FLASHBACK_TRANSACTION_QUERY WHERE xid=HEXTORAW(04001E002E010000);Oracle 10g 数据库基础教程p通常,将闪回事务查询与闪回版本查询相结合,先利用闪回版本查询获取事务ID及事务操作结果,然后利用事务ID查询事务的详细操作信息。nSQLSELECT versions_xid,sal FROM scott.emp VERSIONS BETWEEN SCN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 12 章闪回 技术 8168
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内