OracleDaabaseg闪回技术概述_第1页
OracleDaabaseg闪回技术概述_第2页
OracleDaabaseg闪回技术概述_第3页
OracleDaabaseg闪回技术概述_第4页
OracleDaabaseg闪回技术概述_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第16章OracleDatabase11g闪回技术本章要点:了解闪回技术的意义。掌握闪回表的使用。理解闪回删除的原理。掌握闪回删除的使用。掌握闪回版本查询的使用。掌握闪回事务查询的使用。掌握闪回数据库的使用。了解闪回数据归档与其他闪回技术的区别。掌握闪回数据归档区的创建与管理。掌握闪回数据归档的使用。216.1闪回表(FlashbackTable)闪回表技术用于恢复表中的数据,可以在线进行闪回表操作。闪回表实质上是将表中的数据恢复到指定的时间点(TIMESTAMP)或系统改变号(SCN)上,并将自动恢复索引、触发器和约束等属性,同时数据库保持联机,从而增加整体的可用性。闪回表需要用到数据库中的撤消表空间,可以通过SHOWPARAMETERundo语句查看与撤消表空间相关的信息。316.1闪回表(FlashbackTable)【例16.1】查看当前数据库中与撤消表空间相关的设置,如下:SQL>SHOWPARAMETERundo;NAME TYPE VALUE------------------- ----------- -------------------------undo_management string AUTOundo_retention integer 1200undo_tablespace string UNDOTBS1416.1闪回表(FlashbackTable)进行闪回表操作需要使用FLASHBACKTABLE语句,其语法如下:FLASHBACKTABLE[schema.]tableTO{{SCN|TIMESTAMP}expr[{ENABLE|DISABLE}TRIGGERS]};语法说明如下。schema:模式名。table_name:表名。SCN:系统改变号。相对时间点而言,系统改变号比较难以理解,用户很难知道应该闪回到哪个SCN,而时间则显得明了得多。可以使用SCN_TO_TIMESTAMP函数将SCN转变为对应的时间。TIMESTAMP:时间戳,包括年月日时分秒。可以使用TIMESTAMP_TO_SCN函数将时间转变为对应的SCN。Expr:指定一个值或表达式,用于表示时间点或SCN。ENABLETRIGGERS:与表相关的触发器恢复后,默认为启用状态。DISABLETRIGGERS:与表相关的触发器恢复后,默认为禁用状态。默认情况下为此选项。516.1闪回表(FlashbackTable)【例16.2】下面举例介绍如何使用FLASHBACKTABLE语句执行闪回表操作。(1) 在system用户下创建表mytest,如下:SQL>CREATETABLEmytest(idNUMBER);表已创建。 (2) 向mytest表中插入一条记录,并使用COMMIT命令提交,如下:SQL>INSERTINTOmytestVALUES(1);已创建1行。SQL>COMMIT;提交完成。616.1闪回表(FlashbackTable)(3) 查询系统当前时间,用于闪回时使用,如下:SQL>SELECTTO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS')FROMdual;TO_CHAR(SYSDATE,'YY-------------------2009-10-0610:44:47(4) 再次向mytest表中添加一条记录,并使用COMMIT命令提交,如下:SQL>INSERTINTOmytestVALUES(2);已创建1行。SQL>COMMIT;提交完成。(5) 启用mytest表的行移动功能,如下:SQL>ALTERTABLEmytestENABLEROWMOVEMENT;表已更改。716.1闪回表(FlashbackTable)(6) 使用FLASHBACKTABLE命令,将mytest表中的数据闪回到第3步查询出来的时间点上,如下:SQL>FLASHBACKTABLEmytestTOTIMESTAMP2TO_TIMESTAMP('2009-10-0610:44:47','YYYY-MM-DDHH24:MI:SS');闪回完成。(7) 查询mytest表中的数据,观察其数据是否闪回到了时间点2009-10-0610:44:47上,如下:SQL>SELECT*FROMmytest;ID----------1816.2闪回删除(FlashbackDrop)闪回删除技术用于恢复已经被用户删除(Drop)的数据库对象,这需要使用到Oracle数据库系统中的回收站机制。916.2.1回收站(RecycleBin)1.禁用与启用回收站Oracle系统中的回收站在默认情况下是启用状态的,可以通过设置初始化参数recyclebin的值来修改回收站的状态,这需要使用ALTERSESSION语句,其语法形式如下:ALTERSESSIONSETrecyclebin=ON|OFF;如果回收站处于禁用(OFF)状态,则被删除的数据库对象无法保存到回收站中,只能是被彻底删除。10回回收收站站(RecycleBin)2..查查看看回回收收站站中中的的信信息息查看看回回收收站站中中的的信信息息时时,,普普通通用用户户可可以以使使用用SHOWRECYCLEBIN命命令令,,也也可可以以使使用用user_recyclebin数数据据字字典典,,而而数数据据库库管管理理员员则则可可以以使使用用dba_recyclebin数数据据字字典典。。下面面使使用用DESC命命令令了了解解user_recyclebin数数据据字字典典的的结结构构,,如如下下::参见见教教材材P35211回回收收站站(RecycleBin)3..清清除除回回收收站站中中的的对对象象清除除回回收收站站中中的的对对象象需需要要使使用用PURGE命命令令,,其其语语法法形形式式如如下下::PURGE{[TABLESPACEtablespace_name[USERuser_name]]|[TABLEtable_name|INDEXindex_name]|[RECYCLEBIN|DBA_RECYCLEBIN]};12使使用用闪闪回回删删除除闪回回删删除除的的语语法法形形式式如如下下::FLASHBACKTABLEtable_nameTOBEFOREDROP[RENAMETOnew_table_name];其中中,,table_name可可以以使使用用表表的的原原名名,,也也可可以以使使用用表表在在回回收收站站中中的的名名称称。。如如果果表表的的原原名名相相同同,,则则在在使使用用原原名名进进行行闪闪回回删删除除操操作作时时,,默默认认还还原原最最近近一一次次删删除除的的表表。。表表被被还还原原后后,,默默认认情情况况下下使使用用其其原原名名,,而而如如果果该该名名称称已已经经存存在在,,则则需需要要在在还还原原该该表表时时对对其其重重命命名名,,这这时时需需要要使使用用RENAMETO子子句句。。13使使用用闪闪回回删删除除【例例16.5】】在scott用用户户下下创创建建表表mytest2并并删删除除该该表表后后,,查查询询该该表表在在回回收收站站中中的的信信息息,,如如下下::参见教教材P354再使用用FLASHBACK语语句还还原该该表,,并对对其重重命名名,如如下::SQL>FLASHBACKTABLE"BIN$4VMKTgAvRVG84DxR7n+cFg==$0"2TOBEFOREDROP3RENAMETOmytest2_new;闪回完完成。。使用SELECT语语句查查询mytest2_new表,,检查查是否否成功功还原原,如如下::SQL>SELECT*FROMmytest2_new;ID----------11416.3闪回版版本查查询(FlashbackVersionQuery)闪回版版本查查询技技术用用于查查询某某段时时间内内对表表的操操作记记录,,主要要针对对INSERT、UPDATE和和DELETE操作作。闪闪回版版本查查询的的语法法形式式如下下:SELECTcolumn_name[,...]FROMtable_nameVERSIONS{BETWEENSCN|TIMESTAMPexpr|MINVALUEANDexpr|MAXVALUE|ASOFSCN|TIMESTAMPexpr};1516.3闪回版版本查查询(FlashbackVersionQuery)【例16.6】】在scott用用户下下创建建表myversion,并并对该该表进进行一一系列列增删删改操操作,,如下下:参见教教材P355上述操操作在在每次次DML操操作后后都使使用COMMIT命命令进进行提提交。。接下下来使使用闪闪回版版本查查询获获取myversion表上上的所所有操操作记记录。。如下下:参见教教材P356在上述述查询询中使使用了了FlashbackVersionQuery的的部分分伪列列,其其中,,versions_operation表示示对该该行执执行的的操作作,其其值可可为I、U和D,分分别对对应INSERT、、UPDATE和DELETE;;versions_starttime表示示对该该行进进行改改动时时的起起始时时间戳戳(versions_startscn表示示起始始SCN);versions_endtime表表示此此次改改动不不再有有效时时的结结束时时间戳戳(versions_endscn表示示结束束SCN)。1616.4闪回事事务查查询(FlashbackTransactionQuery)闪回事事务查查询是是对闪闪回版版本查查询的的扩充充,通通过它它可以以审计计事务务甚至至撤消消一个个已提提交的的事务务。在使用用闪回回版本本查询询时,,闪回回操作作针对对的是是表,,而使使用闪闪回事事务查查询则则针对对flashback_transaction_query视视图,,该视视图的的结构构如下下:参见教教材P3561716.4闪回事事务查查询(FlashbackTransactionQuery)【例16.7】】上一节节介绍绍了闪闪回版版本查查询的的使用用,通通过闪闪回版版本查查询可可以了了解表表的操操作记记录,,这些些操作作记录录都是是已提提交的的事务务。如如果需需要撤撤消某某个事事务,,可以以使用用如下下步骤骤。(1)使使用闪闪回版版本查查询获获取事事务ID,,这需需要用用到FlashbackVersionQuery的另另外一一个伪伪列———versions_xid,,例如如获取取myversion表表上的的事务务ID,如如下::参见教教材P357(2)使使用闪闪回事事务查查询需需要用用户具具有SELECTANYTRANSACTION权权限,,下面面使用用system用户户为scott用户户授予予该权权限::参见教教材P357(3)在在scott用用户下下使用用闪回回事务务查询询获取取010018003F050000对应应的事事务信信息,,如下下:参见教教材P357查询结结果中中的undo_sql字字段很很明确确地给给出了了撤消消事务务的语语句,,也就就是说说如果果想要要撤消消删除除“记记录3”的的事务务,只只需要要执行行如下下语句句即可可:insertinto"SCOTT"."MYVERSION"("ID","TEXT")values('3','记记录3');1816.5闪回数数据库库(FlashbackDatabase)闪回数数据库库,实实际上上就是是将数数据库库回退退到过过去的的一个个时间间点或或SCN上上,从从而实实现整整个数数据库库的恢恢复,,这种种恢复复不需需要通通过备备份,,所以以应用用起来来更方方便、、更快快速。。19闪闪回数数据库库设置置闪回数数据库库是依依赖于于闪回回日志志的,,Oracle系统统提供供了一一组闪闪回日日志,,记录录了数数据库库的前前滚操操作。。首先需需要了了解如如下几几个参参数。。db_recovery_file_dest:闪闪回日日志的的存放放位置置。db_recovery_file_dest_size::存放放闪回回日志志的空空间(即恢恢复区区)的的大小小。db_flashback_retention_target:闪闪回数数据的的保留留时间间,其其单位位为分分,默默认值值为1440,,即一一天。。20闪闪回数数据库库设置置启用闪闪回数数据库库功能能需要要使用用如下下语法法形式式:ALTERDATABSEFLASHBACKON|OFF;启用闪闪回数数据库库功能能的步步骤如如下。。(1)确确定当当前数数据库库的日日志模模式是是否为为归档档模式式(2)设设置闪闪回数数据库库功能能为启启用状状态(3)检检查闪闪回数数据库库功能能是否否已经经启用用,如如下::SQL>SELECTflashback_onFROMv$database;FLASHBACK_ON------------------YES从查询询结果果可以以看出出,闪闪回数数据库库功能能已经经成功功启用用。21使使用闪闪回数数据库库启用闪闪回数数据库库功能能后,,就可可以对对数据据库进进行闪闪回操操作了了。使使用闪闪回数数据库库,需需要用用户具具有SYSDBA权权限。。闪回回数据据库的的语法法形式式如下下:FLASHBACK[STANDBY]DATABASE[database_name][TO[BEFORE]SCN|TIMESTAMPexpr];语法说说明如如下。。STANDBY:表表示恢恢复一一个备备用数数据库库,如如果没没有相相应的的备用用数据据库,,则系系统返返回一一个错错误。。如果果不指指定该该选项项,则则所恢恢复的的数据据库可可以是是主数数据库库,也也可以以是备备用数数据库库。database_name:数数据库库名称称。默默认为为当前前数据据库。。SCN:指指定一一个SCN。TIMESTAMP:指指定一一个时时间戳戳。Expr::指定定一个个值或或表达达式。。BEFORE::恢复复到指指定SCN或时时间戳戳之前前。22使使用闪闪回数数据库库【例16.8】】Oracle数数据库库闪回回的示示例如如下。。(1)在在scott用用户下下创建建两个个表student1与与student2,并并向这这两个个表添添加数数据(注意意使用用COMMIT命令令进行行提交交)。。(2)获获取系系统当当前的的时间间,供供闪回回数据据库时时使用用。(3)删删除student1表表,并并修改改student2表中中的数数据。。(4)下下面面使使用用sys用用户户闪闪回回当当前前数数据据库库::参见见教教材材P361(5)使使用用scott用用户户连连接接数数据据库库,,查查询询student1表表和和student2表表。。从查查询询结结果果可可以以看看出出,,scott用用户户下下存存在在student1表表,,并并且且student2表表中中记记录录的的sname值值依依然然为为TRACY,,这这就就说说明明当当前前数数据据库库中中的的数数据据已已经经恢恢复复到到了了指指定定的的时时间间点点。。2316.6闪回回数数据据归归档档(FlashbackDataArchive)闪回回数数据据归归档档的的实实现现机机制制与与前前面面几几种种闪闪回回不不同同,,它它将将改改变变的的数数据据另另外外存存储储到到特特定定的的闪闪回回数数据据归归档档区区中中,,从从而而让让闪闪回回不不再再受受撤撤消消数数据据的的限限制制,,大大大大提提高高了了数数据据的的保保留留时时间间,,闪闪回回数数据据归归档档中中的的数数据据行行可可以以保保留留几几年年甚甚至至几几十十年年。。闪回回数数据据归归档档并并不不针针对对所所有有的的数数据据改改变变,,它它只只记记录录UPDATE和和DELETE语语句句,,而而不不记记录录INSERT语语句句。。24创创建建与与管管理理闪闪回回数数据据归归档档区区1..创创建建闪闪回回数数据据归归档档区区创建建闪闪回回数数据据归归档档区区的的语语法法形形式式如如下下::CREATEFLASHBACKARCHIVE[DEFAULT]archive_nameTABLESPACEtablespace_name[QUOTAsizeK|M]RETENTIONretention_time;2..管管理理闪闪回回数数据据归归档档区区对已已创创建建的的闪闪回回数数据据归归档档区区,,可可以以进进行行如如下下形形式式的的管管理理————添添加加表表空空间间、、删删除除表表空空间间、、修修改改数数据据保保留留期期限限、、修修改改磁磁盘盘限限额额大大小小、、清清除除闪闪回回数数据据归归档档区区中中的的数数据据和和删删除除闪闪回回数数据据归归档档区区。。25为为表表指指定定闪闪回回数数据据归归档档区区1..在在创创建建表表时时为为表表指指定定闪闪回回数数据据归归档档区区在创创建建表表时时为为表表指指定定闪闪回回数数据据归归档档区区,,需需要要使使用用FLASHBACKARCHIVE子子句句。。【例例16.17】】在system用用户户下下创创建建表表table01,,并并为为其其指指定定闪闪回回数数据据归归档档区区为为archive01。。具具体体如如下下::SQL>CONNECTsystem/admin已连连接接。。SQL>CREATETABLEtable01(idNUMBER,textVARCHAR2(10))2FLASHBACKARCHIVEarchive01;表已已创创建建。

温馨提示

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

评论

0/150

提交评论