oracle-10g数据库基础教程之闪回技术.ppt

上传人:F****n 文档编号:97148497 上传时间:2019-09-02 格式:PPT 页数:64 大小:112KB
返回 下载 相关 举报
oracle-10g数据库基础教程之闪回技术.ppt_第1页
第1页 / 共64页
oracle-10g数据库基础教程之闪回技术.ppt_第2页
第2页 / 共64页
oracle-10g数据库基础教程之闪回技术.ppt_第3页
第3页 / 共64页
oracle-10g数据库基础教程之闪回技术.ppt_第4页
第4页 / 共64页
oracle-10g数据库基础教程之闪回技术.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《oracle-10g数据库基础教程之闪回技术.ppt》由会员分享,可在线阅读,更多相关《oracle-10g数据库基础教程之闪回技术.ppt(64页珍藏版)》请在金锄头文库上搜索。

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

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

3、个事务或所有事务在过去一段时间对数据进行的修改; 闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时的状态; 闪回删除(Flashback Drop):将已经删除的表及其关联对象恢复到删除前的状态; 闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某个SCN值时的状态。,注意 闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的; 闪回删除、闪回数据库是基于Oracle 10g中的回收站(Recycle Bin)和闪回恢复区(Flash Recovery Area)特性实现的。 为了使用数据库的

4、闪回技术,必须启用撤销表空间自动管理回滚信息。 如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。,14.2 闪回查询技术,概述 闪回查询 闪回版本查询 闪回事务查询,闪回查询的机制 闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。 为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。 与撤销表空间相关的参数包括 : UNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息; UNDO_TABLESPACE:指定用于回滚信息自

5、动管理的撤销表空间名; UNDO_RETENTIOIN:指定回滚信息的最长保留时间。,14.2.1 闪回查询,闪回查询可以返回过去某个时间点已经提交事务操作的结果。 基本语法: SELECT column_name, FROM table_name AS OF SCN|TIMESTAMP expression WHERE condition 基于AS OF TIMESTAMP的闪回查询 基于AS OF SCN的闪回查询,(1)基于AS OF TIMESTAMP的闪回查询,SQLALTER SESSION SET NLS_DATE_FORMAT=YYYY-MM- DD HH24:MI:SS; S

6、QLSET TIME ON 09:12:50 SQLSELECT empno,sal FROM scott.emp WHERE 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

7、:14:41 SQLCOMMIT; 09:14:50 SQLUPDATE scott.emp SET sal=3500 WHERE empno=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 em

8、pno=7844; EMPNO SAL - 7844 1500 查询第一个事务提交,第二个事务还没有提交时7844号员工的工资。 09: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; EMPNO SAL - 7844 2000,查询第二个事务提交,第三个事务还没有提交时7844号员工的工资 09:17:47 SQLSELECT empno,sal FROM scott.emp AS O

9、F TIMESTAMP TO_TIMESTAMP(2009-3-23 09:15:43,YYYY-MM-DD HH24:MI:SS) WHERE empno=7844; EMPNO SAL - 7844 3000,如果需要,可以将数据恢复到过去某个时刻的状态。 09: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=784

10、4; 09:25:55 SQLCOMMIT; 09:26:13 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844; EMPNO SAL - 7844 3000,14.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 3000 09:28:21 SQLUPDATE scott.e

11、mp SET sal=5000 WHERE empno=7844; 09:29:23 SQLCOMMIT; 09:29:31 SQLUPDATE scott.emp SET sal=5500 WHERE empno=7844;,09:29:55 SQLCOMMIT; 09:30:14 SQLSELECT current_scn FROM v$database; CURRENT_SCN - 617317 09:30:37 SQLSELECT empno,sal FROM scott.emp AS OF SCN 617244 WHERE empno=7844; EMPNO SAL - 7844 3

12、000,注意 事实上,Oracle 在内部都是使用SCN的,即使指定的是AS OF TIMESTAMP,Oracle 也会将其转换成SCN。系统时间与SCN之间的对应关系可以通过查询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_name

13、 VERSIONS BETWEEN SCN|TIMESTAMP MINVALUE|expression AND MAXVALUE|expression AS OF SCN|TIMESTAMP expression WHERE condition 参数说明 VERSIONS BETWEEN:用于指定闪回版本查询时查询的时间段或SCN段; AS OF:用于指定闪回查询时查询的时间点或SCN。,在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息。 VERSIONS_STARTTIME:基于时间的版本有效范围的下界; VERSIONS_STARTSCN:基于SCN的版本有效范围的下界; VER

14、SIONS_ENDTIME:基于时间的版本有效范围的上界; VERSIONS_ENDSCN:基于SCN的版本有效范围的上界; VERSIONS_XID:操作的事务ID; VERSIONS_OPERATION:执行操作的类型,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; S

15、QLCOMMIT; SQLUPDATE scott.emp SET sal=7500 WHERE empno=7844; SQLCOMMIT; SQLSET LINESIZE 600 SQLCOL STARTTIME FORMAT A30 SQLCOL ENDTIME FORMAT A30 SQLCOL 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 ORDER BY STARTTIME;,基于VERSIONS BETWEEN SCN的闪回版本查询。 SQLSELECT versions_xid XID, versions_startscn STARTSCN, versions_endscn ENDSCN, versions_o

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号