oracle之闪回技术_第1页
oracle之闪回技术_第2页
oracle之闪回技术_第3页
oracle之闪回技术_第4页
oracle之闪回技术_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

第14章闪回技术 本章内容 闪回技术概述闪回查询技术闪回查询闪回版本查询闪回事务查询闪回错误操作技术闪回表闪回删除闪回数据库 本章要求 了解闪回技术掌握闪回查询操作掌握闪回版本查询操作掌握闪回事务查询操作掌握闪回表操作掌握闪回删除操作掌握闪回数据库操作 14 1闪回技术概述 闪回基本概念闪回技术分类 14 1 1基本概念 Oracle9i实现了基于回滚段的闪回查询 FlashbackQuery 技术 即从回滚段中读取一定时间内对表进行操作的数据 恢复错误的DML操作 在Oracle10g中 除提高了闪回查询功能 实现了闪回版本查询 闪回事务查询外 还实现了闪回表 闪回删除和闪回数据库的功能 闪回技术是数据库恢复技术历史上一次重大的进步 从根本上改变了数据恢复 采用闪回技术 可以针对行级和事务级发生过变化的数据进行恢复 减少了数据恢复的时间 而且操作简单 通过SQL语句就可以实现数据的恢复 大大提高了数据库恢复的效率 14 1 2闪回技术分类 闪回查询 FlashbackQuery 查询过去某个时间点或某个SCN值时表中的数据信息 闪回版本查询 FlashbackVersionQuery 查询过去某个时间段或某个SCN段内表中数据的变化情况 闪回事务查询 FlashbackTransactionQuery 查看某个事务或所有事务在过去一段时间对数据进行的修改 闪回表 FlashbackTable 将表恢复到过去的某个时间点或某个SCN值时的状态 闪回删除 FlashbackDrop 将已经删除的表及其关联对象恢复到删除前的状态 闪回数据库 FlashbackDatabase 将数据库恢复到过去某个时间点或某个SCN值时的状态 注意闪回查询 闪回版本查询 闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的 闪回删除 闪回数据库是基于Oracle10g中的回收站 RecycleBin 和闪回恢复区 FlashRecoveryArea 特性实现的 为了使用数据库的闪回技术 必须启用撤销表空间自动管理回滚信息 如果要使用闪回删除技术和闪回数据库技术 还需要启用回收站 闪回恢复区 14 2闪回查询技术 概述闪回查询闪回版本查询闪回事务查询 闪回查询的机制闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息 或过去某个时间段数据的变化情况 或某个事务对该表的操作信息等 为了使用闪回查询功能 需要启动数据库撤销表空间来管理回滚信息 与撤销表空间相关的参数包括 UNDO MANAGEMENT 指定回滚段的管理方式 如果设置为AUTO 则采用撤销表空间自动管理回滚信息 UNDO TABLESPACE 指定用于回滚信息自动管理的撤销表空间名 UNDO RETENTIOIN 指定回滚信息的最长保留时间 14 2 1闪回查询 闪回查询可以返回过去某个时间点已经提交事务操作的结果 基本语法 SELECTcolumn name FROMtable name ASOFSCN TIMESTAMPexpression WHEREcondition 基于ASOFTIMESTAMP的闪回查询基于ASOFSCN的闪回查询 1 基于ASOFTIMESTAMP的闪回查询 SQL ALTERSESSIONSETNLS DATE FORMAT YYYY MM DDHH24 MI SS SQL SETTIMEON09 12 50SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 7844150009 13 00SQL UPDATEscott empSETsal 2000WHEREempno 7844 09 13 07SQL COMMIT 09 13 12SQL UPDATEscott empSETsal 2500WHEREempno 7844 09 14 28SQL UPDATEscott empSETsal 3000WHEREempno 7844 09 14 41SQL COMMIT 09 14 50SQL UPDATEscott empSETsal 3500WHEREempno 7844 09 15 43SQL COMMIT 查询7844号员工的当前工资值 09 15 48SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 78443500 查询7844号员工前一个小时的工资值 09 16 00SQL SELECTempno salFROMscott empASOFTIMESTAMPSYSDATE 1 24WHEREempno 7844 EMPNOSAL 78441500查询第一个事务提交 第二个事务还没有提交时7844号员工的工资 09 16 22SQL SELECTempno salFROMscott empASOFTIMESTAMPTO TIMESTAMP 2009 3 2309 14 41 YYYY MM DDHH24 MI SS WHEREempno 7844 EMPNOSAL 78442000 查询第二个事务提交 第三个事务还没有提交时7844号员工的工资09 17 47SQL SELECTempno salFROMscott empASOFTIMESTAMPTO TIMESTAMP 2009 3 2309 15 43 YYYY MM DDHH24 MI SS WHEREempno 7844 EMPNOSAL 78443000 如果需要 可以将数据恢复到过去某个时刻的状态 09 25 23SQL UPDATEscott empSETsal SELECTsalFROMscott empASOFTIMESTAMPTO TIMESTAMP 2009 3 239 15 43 YYYY MM DDHH24 MI SS WHEREempno 7844 WHEREempno 7844 09 25 55SQL COMMIT 09 26 13SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 78443000 14 2 2闪回版本查询 09 27 58SQL SELECTcurrent scnFROMv database CURRENT SCN 61724409 27 58SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 7844300009 28 21SQL UPDATEscott empSETsal 5000WHEREempno 7844 09 29 23SQL COMMIT 09 29 31SQL UPDATEscott empSETsal 5500WHEREempno 7844 09 29 55SQL COMMIT 09 30 14SQL SELECTcurrent scnFROMv database CURRENT SCN 61731709 30 37SQL SELECTempno salFROMscott empASOFSCN617244WHEREempno 7844 EMPNOSAL 78443000 注意事实上 Oracle在内部都是使用SCN的 即使指定的是ASOFTIMESTAMP Oracle也会将其转换成SCN 系统时间与SCN之间的对应关系可以通过查询SYS模式下的SMON SCN TIME表获得 SELECTscn TO CHAR time dp YYYY MM DDHH24 MI SS time dpFROMsys smon scn time 利用闪回版本查询 可以查看一行记录在一段时间内的变化情况 即一行记录的多个提交的版本信息 从而可以实现数据的行级恢复 基本语法SELECTcolumn name FROMtable name VERSIONSBETWEENSCN TIMESTAMPMINVALUE expressionANDMAXVALUE expression ASOFSCN TIMESTAMPexpression WHEREcondition参数说明VERSIONSBETWEEN 用于指定闪回版本查询时查询的时间段或SCN段 ASOF 用于指定闪回查询时查询的时间点或SCN 在闪回版本查询的目标列中 可以使用下列几个伪列返回版本信息 VERSIONS STARTTIME 基于时间的版本有效范围的下界 VERSIONS STARTSCN 基于SCN的版本有效范围的下界 VERSIONS ENDTIME 基于时间的版本有效范围的上界 VERSIONS ENDSCN 基于SCN的版本有效范围的上界 VERSIONS XID 操作的事务ID VERSIONS OPERATION 执行操作的类型 I表示INSERT D表示DELETE U表示UPDATE SQL UPDATEscott empSETsal 6000WHEREempno 7844 SQL UPDATEscott empSETsal 6500WHEREempno 7844 SQL UPDATEscott empSETsal 7000WHEREempno 7844 SQL COMMIT SQL UPDATEscott empSETsal 7500WHEREempno 7844 SQL COMMIT SQL SETLINESIZE600SQL COLSTARTTIMEFORMATA30SQL COLENDTIMEFORMATA30SQL COLOPERATIONFORMATA10 基于VERSIONSBETWEENTIMESTAMP的闪回版本查询 SQL SELECTversions xidXID versions starttimeSTARTTIME versions endtimeENDTIME versions operationOPERATION salFROMscott empVERSIONSBETWEENTIMESTAMPMINVALUEANDMAXVALUEWHEREempno 7844ORDERBYSTARTTIME 基于VERSIONSBETWEENSCN的闪回版本查询 SQL SELECTversions xidXID versions startscnSTARTSCN versions endscnENDSCN versions operationOPERATION salFROMscott empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno 7844ORDERBYSTARTSCN 查询当前7844号员工的工资 SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 78447500 如果需要 可以将数据恢复到过去某个时刻的状态 SQL UPDATEscott empSETsal SELECTsalFROMscott empASOFTIMESTAMPTO TIMESTAMP 2009 3 2310 25 03 YYYY MM DDHH24 MI SS WHEREempno 7844 WHEREempno 7844 SQL COMMIT SQL SELECTempno salFROMscott empWHEREempno 7844 EMPNOSAL 78446000 注意在进行闪回版本查询时 可以同时使用VERSIONS短语和ASOF短语 ASOF短语决定了进行查询的时间点或SCN VERSIONS短语决定了可见的行的版本信息 对于在VERSIONSBETWEEN下界之前开始的事务 或在ASOF指定的时间或SCN之后完成的事务 系统返回的版本信息为NULL 将VERSIONSBWTWEENTIMESTAMP与ASOFTIMESTAMP配合使用 SQL SELECTversions xidXID versions starttimeSTARTTIME versions endtimeENDTIME versions operationOPERATION salFROMscott empVERSIONSBETWEENTIMESTAMPMINVALUEANDMAXVALUEASOFTIMESTAMPTO TIMESTAMP 2009 3 2310 24 40 YYYY MM DDHH24 MI SS WHEREempno 7844ORDERBYSTARTTIME 将VERSIONSBWTWEENSCN与ASOFSCN配合使用SQL SELECTversions xidXID versions startscnSTARTSCN versions endscnENDSCN versions operationOPERATION salFROMscott empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEASOFSCN620045WHEREempno 7844ORDERBYSTARTSCN 14 2 3闪回事务查询 闪回事务查询提供了一种查看事务级数据库变化的方法 可以从FLASHBACK TRANSATION QUERY中查看回滚段中存储的事务信息 例如 SQL SELECToperation undo sql table nameFROMFLASHBACK TRANSACTION QUERY SQL SELECToperation undo sql table nameFROMFLASHBACK TRANSACTION QUERYWHERExid HEXTORAW 04001E002E010000 通常 将闪回事务查询与闪回版本查询相结合 先利用闪回版本查询获取事务ID及事务操作结果 然后利用事务ID查询事务的详细操作信息 SQL SELECTversions xid salFROMscott empVERSIONSBETWEENSCNMINVALUEANDMAXVALUEWHEREempno 7844 SQL SELECToperation undo sqlFROMFLASHBACK TRANSACTION QUERYWHERExid HEXTORAW 04001E002E010000 14 3闪回错误操作技术 闪回表闪回删除闪回数据库 14 3 1闪回表 概述闪回表是将表恢复到过去的某个时间点的状态 为DBA提供了一种在线 快速 便捷地恢复对表进行的修改 删除 插入等错误的操作 与闪回查询不同 闪回查询只是得到表在过去某个时间点上的快照 并不改变表的当前状态 而闪回表则是将表及附属对象一起恢复到以前的某个时间点 利用闪回表技术恢复表中数据的过程 实际上是对表进行DML操作的过程 Oracle自动维护与表相关联的索引 触发器 约束等 不需要DBA参与 为了使用数据库闪回表功能 必须满足下列条件 用户具有FLASHBACKANYTABLE系统权限 或者具有所操作表的FLASHBACK对象权限 用户具有所操作表的SELECT INSERT DELETE ALTER对象权限 数据库采用撤销表空间进行回滚信息的自动管理 合理设置UNDO RETENTIOIN参数值 保证指定的时间点或SCN对应信息保留在撤销表空间中 启动被操作表的ROWMOVEMENT特性 可以采用下列方式进行 ALTERTABLEtableENABLEROWMOVEMENT 闪回表操作的基本语法为FLASHBACKTABLE schema tableTOSCN TIMESTAMPexpression ENABLE DISABLETRIGGERS 参数说明SCN 将表恢复到指定的SCN时状态 TIMESTAMP 将表恢复到指定的时间点 ENABLE DIABLETRIGGER 在恢复表中数据的过程中 表上的触发器是激活还是禁用 默认为禁用 注意SYS用户或以ASSYSDBA身份登录的用户不能执行闪回表操作 SQL CONNscott tigerSQL SETTIMEON09 14 01SQL CREATETABLEtest IDNUMBERPRIMARYKEY nameCHAR 20 09 14 12SQL INSERTINTOtestVALUES 1 ZHANG 09 14 24SQL COMMIT 09 14 32SQL INSERTINTOtestVALUES 2 ZHAO 09 14 39SQL COMMIT 09 14 43SQL INSERTINTOtestVALUES 3 WANG 09 14 49SQL COMMIT 09 16 31SQL SELECTcurrent scnFROMv database CURRENT SCN 67537109 16 50SQL UPDATEtestSETname LIU WHEREid 1 09 17 02SQL COMMIT 09 17 05SQL SELECT FROMtest IDNAME 1LIU2ZHAO3WANG 09 17 13SQL DELETEFROMtestWHEREid 3 09 17 51SQL COMMIT 09 18 02SQL SELECT FROMtest IDNAME 1LIU2ZHAO 启动test表的ROWMOVEMENT特性09 19 33SQL ALTERTABLEtestENABLEROWMOVEMENT 将test表恢复到2009 3 2409 17 51时刻的状态09 20 06SQL FLASHBACKTABLEtestTOTIMESTAMPTO TIMESTAMP 2009 3 2409 17 51 YYYY MM DDHH24 MI SS 09 20 18SQL SELECT FROMtest IDNAME 1LIU2ZHAO3WANG 将test表恢复到SCN为675371的状态09 20 25SQL FLASHBACKTABLEtestTOSCN675371 09 20 50SQL SELECT FROMtest IDNAME 1ZHANG2ZHAO3WANG 14 3 2闪回删除 闪回删除概述回收站管理闪回删除操作 1 闪回删除概述 闪回删除可恢复使用DROPTABLE语句删除的表 是一种对意外删除的表的恢复机制 闪回删除功能的实现主要是通过Oracle10g数据库中的 回收站 RecycleBin 技术实现的 在Oracle10g数据库中 当执行DROPTABLE操作时 并不立即回收表及其关联对象的空间 而是将它们重命名后放入一个称为 回收站 的逻辑容器中保存 直到用户决定永久删除它们或存储该表的表空间存储空间不足时 表才真正被删除 为了使用闪回删除技术 必须开启数据库的 回收站 2 回收站管理 启动 回收站 要使用闪回删除功能 需要启动数据库的 回收站 即将参数RECYCLEBIN设置为ON 在默认情况下 回收站 已启动 SQL SHOWPARAMETERRECYCLEBINSQL ALTERSYSTEMSETRECYCLEBIN ON 查看 回收站 当执行DROPTABLE操作时 表及其关联对象被命名后保存在 回收站 中 可以通过查询USER RECYCLEBIN DBA RECYCLEBIN视图获得被删除的表及其关联对象信息 SQL DROPTABLEtest SQL SELECTBJECT NAME ORIGINAL NAME TYPEFROMUSER RECYCLEBIN 如果在删除表时使用了PURGE短语 则表及其关联对象被直接释放 空间被回收 相关信息不会进入 回收站 中 SQL CREATETABLEtest purge IDNUMBERPRIMARYKEY nameCHAR 20 SQL DROPTABLEtest purgePURGE SQL SELECTBJECT NAME ORIGINAL NAME TYPEFROMUSER RECYCLEBIN 清除回收站由于被删除表及其关联对象的信息保存在 回收站 中 其存储空间并没有释放 因此需要定期清空 回收站 或清除 回收站 中没用的对象 表 索引 表空间 释放其所占的磁盘空间 清除回收站语法为 PURGE TABLEtable INDEXindex RECYCLEBIN DBA RECYCLEBIN TABLESPACEtablespace USERuser 参数说明TABLE 从 回收站 中清除指定的表 并回收其磁盘空间 INDEX 从 回收站 中清除指定的索引 并回收其磁盘空间 RECYCLEBIN 清空用户 回收站 并回收所有对象的磁盘空间 DBA RECYCLEBIN 清空整个数据库系统的 回收站 只有具有SYSDBA权限的用户才可以使用 TABLESPACE 清除 回收站 中指定的表空间 并回收磁盘空间 USER 清除 回收站 中指定表空间中特定用户的对象 并回收磁盘空间 例如 SQL PURGEINDEX BIN i nXRT6iTp6Gb3zoP R5Fw 0 SQL PURSETABLETEST SQL PURGERECYCLEBIN 3 闪回删除操作 闪回删除的基本语法为FLASHBACKTABLE schema tableTOBEFOREDROP RENAMETOtable 注意只有采用本地管理的 非系统表空间中的表可以使用闪回删除操作 示例SQL CREATETABLEexample IDNUMBERPRIMARYKEY NAMECHAR 20 SQL INSERTINTOexampleVALUES 1 BEFOREDROP SQL COMMIT SQL DROPTABLEexample SQL FLASHBACKTABLEexampleTOBEFOREDROPRENAMETOnew example SQL SELECT FROMnew example IDNAME 1BEFOREDROP 14 3 3闪回数据库 闪回数据库概述闪回数据库的限制启动闪回数据库的条件闪回数据库操作 1 闪回数据库概述 闪回数据库技术是将数据库快速恢复到过去的某个时间点或SCN值时的状态 以解决由于用户错误操作或逻辑数据损坏引起的问题 闪回数据库操作不需要使用备份重建数据文件 而只需要应用闪回日志文件和归档日志文件 为了使用数据库闪回技术 需要预先设置数据库的闪回恢复区和闪回日志保留时间 闪回恢复区用于保存数据库运行过程中产生的闪回日志文件 而闪回日志保留时间是指闪回恢复区中的闪回日志文件保留的时间 即数据库可以恢复到过去的最大时间 2 闪回数据库的限制 闪回数据库操作的限制 数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复 闪回数据库只能基于当前正常运行的数据文件 闪回数据库功能启动后 如果发生数据库控制文件重建或利用备份恢复控制文件 则不能使用闪回数据库 不能使用闪回数据库进行数据文件收缩操作 不能使用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN 因为闪回日志文件在一定条件下被删除 而不是始终保存在闪回恢复区中 3 启动闪回数据库的条件 闪回数据库功能需要满足的条件 数据库必须处于归档模式 ARCHIVELOG 数据库设置了闪回恢复区 数据库启用了FLASHBACKDATABASE特性 设置数据库的归档模式SQL CONNSYS TIGERASSYSDBASQL ARCHIVELOGLIST SQL SHUTDOWNIMMEDIATESQL STARTUPMOUNTSQL ALTERDATABASEARCHIVELOG SQL ALTERDATABASEOPEN SQL ALTERSYSTEMARCHIVELOGSTART SQL ARCHIVELOGLIST 设置数据库的闪回恢复区在Oracle10g数据库安装过程中 默认情况下已设置了数据库的闪回恢复区 可以通过参数查询数据闪回恢复区及其空间大小 SQL SHOWPARAMETERDB RECOVERY FILE 启动数据库FLASHBACK特性为了使用闪回数据库 还需要启动数据库的FLASHBACK特性 生成闪回日志文件 在默认情况下 数据库的FLASHBACK特性是关闭的 在数据库处于MOUNT状态时执行ALTERDATABAEFLASHBACKON命令 启动数据库的FLASHBACK特性 可以在数据库处于MOUNT状态时执行ALTERDATABAEFLASHBACKOFF命令 关闭数据库的FLASHBACK特性 需要通过参数DB FLASHBACK RETENTION TARGET设置闪回日志保留时间 该参数默认值为1440分钟 即一天 示例SQL SHUTDOWNIMMEDIATESQL STARTUPMOUNTSQL ALTERDATABASEFLASHBACKON SQL ALTERDATABASEOPEN SQL

温馨提示

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

评论

0/150

提交评论