海阔凭鱼跃,天高任鸟飞
===========================================================
DSI403e读书笔记之六--非常规组件的备份与恢复
===========================================================
课程目标
1、从功能和内部技术角度上描述只读数据文件,脱机文件,控制文件等组件的备份与恢复。
2、数据块恢复
3、从stucky recovery中恢复
更多的非常规的恢复例如RAC,不完全恢复,resetlogs的影响等相关内容在DSI403 backup and recovery processes中讲述。

只读表空间的备份恢复
只读表空间的数据文件没有更新,因此只需restore,没有recovery过程。只读属性是表空间和数据文件的一个属性。在只读数据文件中不存在任何更新操作,因此与数据库的其他数据文件头信息不一致,但在数据文件头和控制文件中记录相应信息。如果数据文件损坏,只需要进行restore即可。
切换到只读表空间:数据库存在任何活动事务时不能将表空间转为只读表空间,因为活动事务与它要修改的表空间不存在关联关系。在oracle9i中,alter tablespace将等待所有活动事务完成,并阻止任何新事务使用该表空间。在oracle8i中将等待所有活动事务完成。
当表空间从read-write切换到只读时所有的数据文件将发生检查点,所有相关redo都写入日志文件。对表空间中的每个数据文件,在控制文件中的stop scn被更新为最后一次checkpoint scn.在线fuzzy位从数据文件中清除。TS$SCNBAS和TS$SCNWRP对该表空间被设置为最后一次检查点scn。
当表空间从readonly切换到read-write时数据文件stop scn被设置为无限大,online fuzzy bit被设置。文件发生检查点事件(没有数据修改,只更新文件头信息)
切换到read-write状态时需要对数据文件进行常规备份。如果切换到read-only状态,需要对新的只读数据文件备份。因为切换文件状态被认为是数据库结构的变化,备份时应包括控制文件。

脱机数据文件
脱机数据文件有两种模式:normal和immediate。在normal模式下脱机表空间将导致该表空间下的所有数据文件发生检查点事件并更新控制文件。immediate脱机表空间不会导致额外的数据写,数据文件头的更新及数据文件检查点操作,也不更新控制文件。通实例崩溃一样,即使buffer cache中没有任何块,再次联机时也需要进行媒体恢复。因此immediate脱机方式必须在归档模式下。
当数据文件或表空间联机时,控制文件和数据文件头信息决定是否需要媒体恢复,联机将发生检查点事件以更新控制文件和数据文件头为当前时标。
I/O错误可能导致数据文件脱机,错误信息将记录在alert.log中。当试图访问脱机文件中报告错误,这时通常需要从最近一次检查点进行恢复(只读表空间除外)。

控制文件恢复
恢复控制文件通常不是一件好事情,最后是确保控制文件有足够多的镜像。
控制文件的备份应记录了当前数据库的物理结构并且具有一致性。
备份方法:在实例空闲或nomount状态下copy,在mount或open状态下alter database backup controlfile to 'name'
使用备份控制文件的恢复:在使用备份控制文件进行恢复时,从控制文件中获取的所有scn,rba信息都附属于从数据文件头中的信息,恢复完成时被当前值重写。
创建控制文件:在缺少控制文件进行恢复时,你需要当前所有数据文件和日志文件的列表。最好是从alter database backup controlfile to trace的结果中获得。如果你需要手工输入一些信息,不要输入脱机和只读及临时数据文件。这种情况下将从数据文件头中的scn开始恢复。完成后手工重建临时文件。
恢复内部原理:在控制文件恢复后,打开数据库时比较file$与控制文件中的列表,在file$中的文件被加入到控制文件中并重命名为missingnnn,然后标识为脱机,需要进行媒体恢复。在控制文件中存在但file$不存在的数据文件被认为已经删除,将从控制文件移除相应信息。只读表空间文件采用相同的处理方式。
临时文件仅存在于控制文件中,不记录在数据字典中,因此必须重建。
简单控制文件恢复:在数据库正常关闭情况下恢复控制文件,只需已noresetlogs重建控制文件即可。

使用RMAN的块恢复
9i允许在线状态下的数据文件块恢复。RMAN自动从数据文件中检索要恢复的块,从备份中提取块信息并应用相应日志已达到当前时标。

Stucky Recovery--数据块scn小于恢复所应用的redo record scn
可能产生stucky recovery的原因:
1、恢复未从日志流中更早的起点开始
2、日志丢失
3、数据或日志坏块
可用方法:
1、尝试从更老的数据块或日志开始恢复
2、标识数据块为坏块_corrupt_blocks_on_stuck_recovery=true(9i以前)
恢复测试:尝试进行正常恢复,但不写入数据文件。测试可发现日志恢复中的错误,从而根据错误来决定恢复方法。
恢复测试可将数据块标识为坏块。

brotherxiao 发表于:2006.12.08 15:22 ::分类: ( Oracle技术讨论 ) ::阅读:(444次) :: 评论 (2)
re: DSI403e读书笔记之六--非常规组件的备份与恢复 [回复]

buy wow gold
EURO starting at $29.99, and make sure to check for rare and epic items on your server. Enjoy! smile

新年快乐 评论于: 2008.01.24 11:17
抽湿机 [回复]

肝炎肝炎肝炎
切割机

抽湿机 评论于: 2007.11.22 12:37

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)




自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...