已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章闪回操作和Undo表空间,9.1闪回操作闪回在Oracle9i就已经提出,在Oracle10g中,数据闪回功能更加完善,可以在不对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。,9.1.1基本概念,闪回操作使数据库中的实体显示或回到过去某一时间点,这样可以实现对历史数据的恢复。闪回数据库功能可以将Oracle数据库恢复到以前的时间点。传统方法是进行时间点恢复。然而,时间点恢复需要数小时甚至几天的时间。闪回数据库是进行时间点恢复的新方法。它能够快速将Oracle数据库恢复到以前的时间,以正确更正由于逻辑数据损坏或用户错误而引起的任何问题。当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块。在Oracle10g中,闪回操作包括:(1)查询闪回(FlashbackQuery):查询过去某个指定时间、指定实体的数据,恢复错误的数据库更新、删除等。(2)表闪回(FlashbackTable):使表返回到过去某一时间的状态,可以恢复表、取消对表进行的修改。删除闪回(FlashbackDrop):可以将删除的表重新恢复。(4)数据库闪回(FlashbackDatabase):可以将整个数据库回退到过去某个时间点。,第9章闪回操作和Undo表空间,9.1.2查询闪回,Oracle查询闪回使管理员或用户能够查询过去某些时间点的任何数据,查看和重建因意外被删除或更改而丢失的数据。闪回查询管理简单,数据库可自动保存必要的信息,以在可配置时间内重新将数据恢复过去的状态。执行查询闪回操作时,需要使用两个时间函数:TIMESTAMP和TO_TIMESTAMP。其中,函数TO_TIMESTAMP的语法格式为:TO_TIMESTAMP(timepoint,format)其中:timepoint:表示某时间点。format:需要把timepoint格式化成何种格式。,9.1.2查询闪回,【例9.1】使用查询闪回恢复删除的数据。(1)查询表XS_JSJ中的数据:SQLSETTIMEON16:11:37SQLSELECT*FROMXS_JSJ;XHXMZYMXBCSSJZXFBZ061101王林计算机男1986-02-1050NULL061102程明计算机男1987-02-0150NULL061103王燕计算机女1985-10-0650NULL061104韦严平计算机男1986-08-2650NULL061106李方方计算机男1986-11-2050NULL061107李明计算机男1986-05-0154提前修完数据结构,并获学分061108林一帆计算机男1985-08-0552已提前修完一门课061109张强民计算机男1984-08-1150NULL061110张蔚计算机女1987-07-2250三好生061111赵琳计算机女1986-03-1850NULL061113严红计算机女1985-08-1148有一门功课不及格,待补考,9.1.2查询闪回,(2)删除表XS_JSJ中所有记录并提交。16:12:24SQLDELETEFROMXS_JSJ;16:13:15SQLCOMMIT;(3)进行查询回闪。16:14:12SQLSELECT*FROMXS_JSJASOFTIMESTAMPTO_TIMESTAMP(2006-5-3116:12:25,YYYY-MM-DDHH24:MI:SS);执行以上语句后,可以看到表中原来的数据。(4)将闪回中的数据重新插入XS_JSJ表中。16:16:21SQLINSERTINTOXS_JSJSELECT*FROMXS_JSJASOFTIMESTAMPTO_TIMESTAMP(2006-5-3116:12:25,YYYY-MM-DDHH24:MI:SS);,9.1.3表闪回,利用表闪回可以恢复表,取消对表所进行的修改。表闪回要求用户具有以下权限:(1)FLASHBACKANYTABLE权限或者是该表的Flashback对象权限。(2)有该表的SELECT、INSERT、DELETE、ALTER权限。(3)必须保证该表ROWMOVEMENT。Oracle10g的闪回表与Oracle9i的查询闪回功能类似,也是利用恢复信息(UndoInformations)对以前的一个时间点上的数据进行恢复。Oracle10g的表闪回有如下特性:(1)在线操作。(2)恢复到指定时间点或者SCN的任何数据。(3)自动恢复相关属性,如索引、触发器等。(4)满足分布式的一致性。(5)满足数据一致性,所有相关对象的一致性。,9.1.3表闪回,要实现表闪回,必须确保与撤销表空间有关的参数设置合理。撤销表空间相关参数为:UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。在sql*plus中执行下面的语句显示撤销表空间的参数。SQLSHOWPARAMETERUNDONAMETYPEVALUEUndo_managementstringAUTOUndo_retentioninteger900Undo_tablespacestringUNDOTBS1,9.1.3表闪回,在创建撤销表空间时,要考虑数据保存的时间长短、每秒产生的块数据量及块大小等。假如表空间大小用undo表示,那么:undoURUPSDB_BLOCK_SIZE+冗余量(1)UR:在undo中保持的最长时间数(秒),由数据库参数UNDO_RETENTION值决定。(2)UPS:在undo中每秒产生的数据块数量。表闪回的语法格式如下:FLASHBACKTABLEschema.table_nameTOBEFOREDROPRENAMETOtable|SCN|TIMESTAMPexprENABLE|DISABLETRIGGERS(1)schema:方案名称。(2)BEFOREDROP:表示恢复到删除之前。(3)RENAMETOtable:表示恢复时更换表名。(4)SCN:SCN是系统改变号,可以从flashback_transaction_query数据字典中查到。(5)TIMESTAMP:表示系统邮戳,包含年月日以及时分秒。(6)ENABLETRIGGERS:表示触发器恢复之后的状态为ENABLE。默认为DISABLE状态。,9.1.3表闪回,【例9.2】首先创建一个表,然后删除某些数据,再利用FlashbackTable命令恢复。(1)使用ADMIN登录sql*plus并创建表XS_KC1。SQLSETTIMEON20:26:59SQLCREATETABLEXS_KC1ASSELECT*FROMXS_KC;20:27:34SQLSELECT*FROMXS_KC1;查询的部分数据如图9.1所示。,图9.1表XS_KC1中的部分数据,9.1.3表闪回,(2)删除学号为061113的学生选修课程的记录并提交。20:27:56SQLDELETEFROMXS_KC1WHEREXH=061113;20:28:11SQLCOMMIT;使用SELECT语句查询表XS_KC1,学号为061113的学生选修课程的记录已不存在。(3)使用表闪回进行恢复。20:28:13SQLALTERTABLEXS_KC1ENABLEROWMOVEMENT;20:28:59SQLFLASHBACKTABLEXS_KC1TOTIMESTAMPTO_TIMESTAMP(2006-5-3120:28:08,YYYY-MM-DDHH24:MI:SS);上述例子中,我们采用TO_TIMESTAMP来指定恢复时间。我们还可以使用SCN,但是在操作中,时间比较容易掌握,而误操作时的SCN并不容易得知。Oracle使用TIMESTAMP_TO_SCN函数来实现将时间戳转换为SCN。注意:在每个系统中,返回的SCN是不一样的。,9.1.4删除闪回,1.删除闪回操作当用户对表进行DDL操作时,它是自动提交的。如果误删除了某个表,在Oracle10g版本之前只能使用日常的备份恢复数据了。现在,Oracle10g提供的删除闪回为数据库实体提供一个安全机制。与Windows文件删除功能相似,当用户删除一个表时,Oracle系统会将该表放到回收站中,直到用户决定永久删除它们,使用PURGE命令对回收站空间进行清除;或是出现表空间的空间不足时它们才会被删除。回收站是一个虚拟容器,用于存储所有被删除的对象。为了避免被删除的表与同类对象名称重复,被删除表(或者其他对象)放到回收站时,Oracle系统对被删除表(或对象名)进行了转换。转换后的名称格式如下:BIN$globalUID$SversionglobalUID是一个全局唯一的标识对象,长度为24个字符。它是Oracle内部使用的标识。$Sversion是数据库分配的版本号。,9.1.4删除闪回,数据字典USER_TABLES中的DROPPED列表示表是否被删除。使用SELECT语句查询。如图9.2所示,DRROPPED字段值为“YES”的TABLE_NAME均为转换后的名称。,图9.2USER_TABLES获得的信息,9.1.4删除闪回,【例9.3】删除闪回的实现。(1)使用DELETE命令删除表XS_KC1SQLDELETETABLEXS_KC1;(2)查询数据字典信息。SQLSELECTOBJECT_NAME,ORIGINAL_NAME,TYPE,DROPTIMEFROMRECYCLEBIN;OBJECT_NAMEORIGINAL_NAMETYPEDROPTIMEBIN$IjiFX9AtQ5SpWpmM0UM5XQ=$0PK_XHINDEX2006-05-12:13:02:58BIN$zSYB+LfCTxSgq52R4siO9Q=$0XSTablePartition2006-05-12:13:02:58BIN$3TBJPuzeQQ+1hW7wZncMuQ=$0ATABLE2006-05-12:14:08:38BIN$rfkYjlyoRF6uK716UUwwBg=$0XS2TABLE2006-05-12:20:59:27BIN$BFGXZQMxRMmnIpJVT/mJ1w=$0XS_KC1TABLE2006-05-31:22:21:39(3)使用删除回闪从回收站恢复表XS_KC1。SQLFLASHBACKTABLEXS_KC1TOBEFOREDROP;如果不知道原表名,可以直接使用回收站中的名称进行闪回。,9.1.4删除闪回,2.回收站管理回收站可以提供误操作后进行恢复的必要信息,但是如果不经常对回收站的信息进行管理的话,磁盘空间会被长时间占用,因此要经常清除回收站中无用的东西。要清除回收站,可以使用PURGE命令。PURGE命令可以删除回收站中的表、表空间和索引,并释放表、表空间和索引所占用的空间。PURGE命令语法格式如下:PURGETABLESPACEtablespaceUSERuser|TABLEtable|INDEXindex|RECYCLEBIN|DBA_RECYCLEBIN(1)TABLE指示清除回收站中的表。(2)INDEX指示清除回收站中的索引。(3)TABLESPACE指示清除回收站中的表空间。(4)RECYCLEBIN指的是当前用户需要清除的回收站。(5)RECYCLEBIN仅SYSDBA系统权限才能使用,此参数可使用户从Oracle系统回收站清除所有对象。,9.1.4删除闪回,【例9.4】查询当前用户回收站中的内容,再用PURGE清除。(1)查询回收站内容。SQLSELECTOBJECT_NAME,ORIGINAL_NAMEFROMUSER_RECYCLEBIN;OBJECT_NAMEORIGINAL_NAMEBIN$IjiFX9AtQ5SpWpmM0UM5XQ=$0PK_XHBIN$zSYB+LfCTxSgq52R4siO9Q=$0XSBIN$zSYB+LfCTxSgq52R4siO9Q=$0XSBIN$zSYB+LfCTxSgq52R4siO9Q=$0XSBIN$zSYB+LfCTxSgq52R4siO9Q=$0XSBIN$3TBJPuzeQQ+1hW7wZncMuQ=$0ABIN$rfkYjlyoRF6uK716UUwwBg=$0XS2(2)清除表XS2。SQLPURGETABLEXS2;,9.1.5数据库闪回,Oracle10g数据库在执行DML操作时,将每个操作过程记录在日志文件中,若Oracle系统出现错误操作时,可进行数据库级的闪回。数据库闪回可以使数据库回到过去某一时间点上或SCN的状态,用户可以不利用备份就能快速地实现时间点地恢复。为了能在发生误操作时闪回数据库到误操作之前地时间点上,需要设置下面三个参数:(1)DB_RECOVERY_FILE_DEST:确定FlashbackLogs地存放路径。(2)DB_RECOVERY_FILE_DEST_SIZE:指定恢复区地大小,默认值为空(3)DB_FLASHBACK_RETENTION_TARGET:设定闪回数据库的保存时间,单位是分钟,默认是一天。当用户发布FlashbackDatabase语句后,Oracle系统首先检查所需的归档文件和联机重做日志,如果正常,则恢复数据库中所有数据文件到指定的SCN或时间点上。,9.1.5数据库闪回,数据库闪回的语法如下:FLASHBACKSTANDBY|DATABASEdatabaseTOSCN|TIMESTAMPexpr|TOBEFORESCN|TIMESTAMPexpr(1)database:要执行闪回的数据库名称。(2)TOSCN:指定SCN。(3)SCNexpr:指定一个系统改变号SCN(4)BEFORE:恢复到之前的SCN。(5)TIMESTAMPexpr:指定一个有效的时间点。(6)TOTIMESTAMP:需要恢复的时间点。(7)BEFORE:恢复数据库到之前的时间点。使用FlashbackDatabase,必须以MOUNT启动数据库实例,然后执行alterdatabaseflashbackon或者alterdatabasetsnameflashbackon命令打开数据库闪回功能。Alterdatabaseflashbackoff命令是关闭数据库闪回功能。,9.1.5数据库闪回,【例9.5】设置闪回数据库环境。(1)登录到SYSTEM。连接到:OracleDatabase10gEnterpriseEditionRelease10.1.0.2.0-ProductionWiththePartitioning,OLAPandDataMiningoptionsSQLSHOWPARAMETERDB_RECOVERY_FILE_DESTNAMETYPEVALUEdb_recovery_file_deststringD:flash_recovery_areadb_recovery_file_dest_sizebiginteger2GSQLSHOWPARAMETERFLASHBACKNAMETYPEVALUEdb_flashback_retention_targetinteger1440(2)以SYSDBA登录,确认实例是在在归档模式。SQLCONN/ASSYSDBASQLSELECTDBID,NAME,LOG_MODEFROMV$DATABASEDBIDNAMELOG_MODE642184395XSCJARCHIVELOGSQLSHUTDOWNIMMEDIATE数据库已经关闭。已经卸载数据库。ORACLE例程已经关闭。,9.1.5数据库闪回,(3)设置FlashbackDatabase为启用。SQLSTARTUPMOUNTORACLE例程已经启动。TotalSystemGlobalArea171966464bytesFixedSize787988bytesVariableSize145750508bytesDatabaseBuffers25165824bytesRedoBuffers262144bytes数据库装载完毕。SQLALTERDATABASEFLASHBACKON;SQLALTERDATABASEOPEN;通过上述过程,对闪回数据库功能的设置,Oracle10g的闪回数据库功能就会自动搜集数据,用户只要确保数据库是归档模式即可。设置好闪回数据库所需要的环境和参数,就可以在系统出现错误时用FlashbackDatabase命令恢复数据库到某个时间点或SCN上。,9.1.5数据库闪回,【例9.6】数据库闪回。(1)查看当前数据库是否是归档模式和启用了闪回数据库功能。SQLSELECTDBID,NAME,LOG_MODEFROMV$DATABASESQLARCHIVELOGLIST数据库日志模式存档模式自动存档禁用存档终点USE_DB_RECOVERY_FILE_DEST最早的联机日志序列210当前日志序列212SQLSHOWPARAMETERDB_RECOVERY_FILE_DESTNAMETYPEVALUEdb_recovery_file_deststringD:flash_recovery_areadb_recovery_file_dest_sizebiginteger2G,9.1.5数据库闪回,(2)查询当前时间和旧的闪回号。SQLSHOWUSER;USER为SYSSQLSELECTSYSDATEFROMDUAL;SYSDATE01-6月-06SQLALTERSESSIONSETNLS_DATE_FORMAT=YYYY-MM-DDHH24:MI:SS;会话已更改。SQLSELECTSYSDATEFROMDUAL;SYSDATE2006-06-0114:35:26SQLSELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;OLDEST_FLASHBACK_SCNOLDEST_FLASHBACK_TIME40682822006-06-0113:45:26SQLSETTIMEON,9.1.5数据库闪回,(3)在当前用户下创建例表KC114:54:56SQLCREATETABLEKC1ASSELECT*FROMADMIN.KC;(4)确定时间点,模拟误操作,删除表KC114:56:23SQLSETTIMEON14:56:26SQLSELECTSYSDATEFROMDUAL;SYSDATE2006-06-0115:06:1615:06:45SQLDROPTABLEKC115:07:03SQLDESCKC1;ERROR:ORA-04043:对象KC1不存在(5)以MOUNT打开数据库并进行数据库闪回。15:07:33SQLSHUTDOWNIMMEDIATE;15:27:05SQLSTARTUPMOUNTEXCLUSIVE;15:27:53SQLFLASHBACKDATABASETOTIMESTAMP(TO_DATE(2006-06-0115:06:16,YYYY-MM-DDHH24:MI:SS);15:43:23SQLALTERDATABASEOPENRESETLOGS;利用数据库闪回后,通过SELECT语句可以发现KC1恢复到错误操作之前,表结构和数据都已经恢复。,9.2Undo表空间,回滚段一直是Oracle数据库困扰数据库管理员的难题,因为它是动态参数,当用户的事务量较小时回滚段不会出现错误;而当事务量大时就会出现错误。在Oracle10g数据库中,Undo表空间取代了回滚段。当然在Oracle10g数据库中回滚段仍然可以使用,但是Oracle建议使用Undo表空间(Undo_Tablespace)机制工作。,9.2.1自动Undo管理,在Oracle10g中,允许创建多个Undo表空间,但是一时间只能激活一个Undo表空间。使用参数文件中的Undo_TABLESPACE参数指定要激活的Undo表空间名,Undo表空间的组织和管理由Oracle10g系统内部机制自动完成。在自动Undo管理设置完成后,在数据字典DBA_ROLLBACK_SEGS中可以显示回滚段信息,但是回滚段的管理由数据库实例自动进行。在旧版本中,采用在RBS表空间创建大的回滚段的方法处理大的事务。但是由于一个事务只可以使用一个回滚段,当一个回滚段动态扩展超过数据库文件允许的扩展范围时,将产生回滚段不足的错误,系统就终止事务。使用自动Undo管理后,一个事务可以使用多个回滚段。当一个回滚段不足时,Oracle系统会自动使用其他回滚段,不终止事务的运行。在Oracle10g中,DBA只是需要了解Undo表空间是否有足够的空间,而不必为每一个事务设置回滚段。,9.2.2Undo表空间的优点,Oracle数据库系统在处理事务时,将改变前的值一直保存在回滚段中以便Oracle系统可以跟踪之前的映象(Image)数据。只要事务没有提交,与事务有关的数据一直保存在回滚段中;一旦事务提交,系统立即清除回滚段中的数据。在旧版本中,对于大的事务处理所带来的回滚段分配失败一直没有完善的解决方法,Oracle10g版本采用了Undo表空间,它有如下几个方面的优点:(1)存储非提交或提交的事务改变块拷贝。(2)存储数据库改变的数据行拷贝(可能是块级)。(3)存储自从上次提交以来的事务的快照。(4)在内存中存放逻辑信息或文件中的非物理信息。(5)存储一个事务的前映象(BeforImage)。(6)系统撤销数据允许非提交事务。,9.2.3Undo表空间管理参数,Oracle10g数据库系统中,默认启用自动Undo管理,同时支持传统的回滚段的使用。使用自动Undo管理,需要设置下列参数:(1)Undo_MANAGEMENT:确定Undo表空间的管理方式,如果该参数设置为“AUTO”,表示系统使用自动Undo管理;如果设置为“MANUAL”,表示使用手动Undo管理,以回滚段方式启动数据库。(2)Undo_TABLESPACE:表示使用自动Undo管理时,系统默认的Undo表空间名,默认名为undotbs。(3)Undo_RETENTION:决定Undo数据的维持时间,即用户事务结束后,Undo的时间保留时间,默认值为900秒。以SYSDBA用户登录sql*plus,使用SHOW命令可以查询Undo参数的设置情况:SQLSHOWPARAMETERUNDONAMETYPEVALUEUndo_managementstringAUTOUndo_retentioninteger900Undo_tablespacestringundotbs1,9.2.4创建和管理Undo表空间,在Oracle10g数据库安装结束后,系统已经创建了一个Undo表空间,回滚段的管理方式自动设置为自动Undo管理。根据需要,可以创建第二个Undo表空间。可以使用Oracle企业管理或者命令方式创建Undo表空间。(1)界面方式创建和管理Undo表空间界面创建Undo表空间和创建一般的表空间方法一样,只是在如图9.3所示的“创建表空间”的“一般信息”界面中,表空间类型选择“撤销”即可,其他设置请参考2.2.2中的例2.4。,图9.3创建Undo表空间,9.2.4创建和管理Undo表空间,(2)命令方式创建和管理Undo表空间命令方式创建Undo表空间相对于界面方式要更灵活、方便。创建Undo表空间语法格式:CREATEUNDOTABLESPACEtablespace_nameDATAFILEpath/filenameSIZEintegerKMREUSEAUTOEXTENDOFFONNEXTintegerKMMAXSIZEUMLIMITEDintegerKMONLINEOFFLINELOGGINGNOLOGGINGEXTENTMANAGEMENTLOCALAUTOALLOCATE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年简易劳动合同范本下载
- 2025年个人定期存单质押借款合同
- 2025关于编制商品房买卖合同模板
- 2025标准版买卖合同的模板
- 2025年学法普法知识试题库(附答案解析)
- 2025YY医学院附属Y市Y医院Y采购合同
- 剧情模拟测试题及答案
- 特斯拉协议书
- 门市买卖协议书
- 巴塞尔协议书内容识别
- 胃柿石的健康宣教
- GB/T 27995.2-2025半成品镜片毛坯第2部分:渐变焦
- 五年级下册外研版单词表全部
- 北师大版八年级上册数学全册教案
- 多媒体会议系统设备安装调试方案
- 中国地面气候标准值数据集台站表(全国2160站点)
- 危重患者的早期识别及处理原则
- 调试管理制度总则方案(7篇)
- 贵州省毕节市七星关区第三实验学校2024-2025学年八年级上学期期中检测语文题
- 《机械制图(多学时)》中职全套教学课件
- (初级)航空油料计量统计员技能鉴定理论考试题库(含答案)
评论
0/150
提交评论