欢迎来到天天文库
浏览记录
ID:62072986
大小:375.50 KB
页数:38页
时间:2021-04-14
《最新oracle10g经典实战第9章-闪回操作和Undo教学讲义ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、oracle10g经典实战第9章-闪回操作和Undo9.1.1基本概念闪回操作使数据库中的实体显示或回到过去某一时间点,这样可以实现对历史数据的恢复。闪回数据库功能可以将Oracle数据库恢复到以前的时间点。传统方法是进行时间点恢复。然而,时间点恢复需要数小时甚至几天的时间。闪回数据库是进行时间点恢复的新方法。它能够快速将Oracle数据库恢复到以前的时间,以正确更正由于逻辑数据损坏或用户错误而引起的任何问题。当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块。在Oracle1
2、0g中,闪回操作包括:(1)查询闪回(FlashbackQuery):查询过去某个指定时间、指定实体的数据,恢复错误的数据库更新、删除等。(2)表闪回(FlashbackTable):使表返回到过去某一时间的状态,可以恢复表、取消对表进行的修改。删除闪回(FlashbackDrop):可以将删除的表重新恢复。(4)数据库闪回(FlashbackDatabase):可以将整个数据库回退到过去某个时间点。第9章 闪回操作和Undo表空间9.1.2查询闪回Oracle查询闪回使管理员或用户能够查询过去某
3、些时间点的任何数据,查看和重建因意外被删除或更改而丢失的数据。闪回查询管理简单,数据库可自动保存必要的信息,以在可配置时间内重新将数据恢复过去的状态。执行查询闪回操作时,需要使用两个时间函数:TIMESTAMP和TO_TIMESTAMP。其中,函数TO_TIMESTAMP的语法格式为:TO_TIMESTAMP(’timepoint’,’format’)其中:timepoint:表示某时间点。format:需要把timepoint格式化成何种格式。9.1.3表闪回要实现表闪回,必须确保与撤销表空间有
4、关的参数设置合理。撤销表空间相关参数为:UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。在sql*plus中执行下面的语句显示撤销表空间的参数。SQL>SHOWPARAMETERUNDONAMETYPEVALUEUndo_managementstringAUTOUndo_retentioninteger900Undo_tablespacestringUNDOTBS19.1.3表闪回在创建撤销表空间时,要考虑数据保存的时间长短、每秒产生的块数据量及块大小
5、等。假如表空间大小用undo表示,那么:undo=UR×UPS×DB_BLOCK_SIZE+冗余量(1)UR:在undo中保持的最长时间数(秒),由数据库参数UNDO_RETENTION值决定。(2)UPS:在undo中每秒产生的数据块数量。表闪回的语法格式如下:FLASHBACKTABLE[schema.]table_nameTO{[BEFOREDROP[RENAMETOtable]]
6、[SCN
7、TIMESTAMP]expr[ENABLE
8、DISABLE]TRIGGERS}(1)schema:方
9、案名称。(2)BEFOREDROP:表示恢复到删除之前。(3)RENAMETOtable:表示恢复时更换表名。(4)SCN:SCN是系统改变号,可以从flashback_transaction_query数据字典中查到。(5)TIMESTAMP:表示系统邮戳,包含年月日以及时分秒。(6)ENABLETRIGGERS:表示触发器恢复之后的状态为ENABLE。默认为DISABLE状态。9.1.3表闪回【例9.2】首先创建一个表,然后删除某些数据,再利用FlashbackTable命令恢复。(1)使用A
10、DMIN登录sql*plus并创建表XS_KC1。SQL>SETTIMEON20:26:59SQL>CREATETABLEXS_KC1ASSELECT*FROMXS_KC;20:27:34SQL>SELECT*FROMXS_KC1;查询的部分数据如图9.1所示。图9.1表XS_KC1中的部分数据9.1.3表闪回(2)删除学号为061113的学生选修课程的记录并提交。20:27:56SQL>DELETEFROMXS_KC1WHEREXH=’061113’;20:28:11SQL>COMMIT;使用S
11、ELECT语句查询表XS_KC1,学号为061113的学生选修课程的记录已不存在。(3)使用表闪回进行恢复。20:28:13SQL>ALTERTABLEXS_KC1ENABLEROWMOVEMENT;20:28:59SQL>FLASHBACKTABLEXS_KC1TOTIMESTAMPTO_TIMESTAMP(‘2006-5-3120:28:08’,’YYYY-MM-DDHH24:MI:SS’);上述例子中,我们采用TO_TIMESTAMP来指定恢复时间。我们还可以使用SCN,但是
此文档下载收益归作者所有