5恢复rman坏块介质blockrecover_第1页
5恢复rman坏块介质blockrecover_第2页
5恢复rman坏块介质blockrecover_第3页
5恢复rman坏块介质blockrecover_第4页
5恢复rman坏块介质blockrecover_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、对于物理损坏的数据块,可以通过 RMAN 块介质恢复(BLOCKMEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块。使用 RMAN 块介质恢复的前提必须有可用的 RMAN 备份存在。一、环境准备1、查询版本信息SYSorcl select * from v$verwhere rownumcreatetablespacetbs_tmpdatafile/u01/app/oracle/oradata/orcl/tbs_tmp.dbfsize10mautoextend on;3、在 scott 用户下创建测试表SYSorcl create

2、table scott.tb_tmp tablespace tbs_tmp asselect * from dba_objects;4、查询 tbs_tmp 表空间的数据文件及数据文件SYSorcl select file_id,file_name from dba_data_fileswhere tablespace_name=TBS_TMP;5、表对象 tb_tmp 上的信息,包含对应的文件信息,头部块,总块数SYSorclselectsegment_name,header_file,header_block,blocks from dba_segmentswhere segment_na

3、me =TB_TMP and owner=SCOTT;6、使用 rman 备份对应的数据文件oraclewl $ rman/RMAN backup datafile 6;二、单块数据块损坏的恢复处理1、使用 linux 自带的 dd 命令来损坏单块数据块oraclewl$ddof=/u01/app/oracle/oradata/orcl/tbs_tmp.dbfbs=8192conv=notrunc seek=130 alter system flush buffer_cache;3、查询表 tb_tmp,收到 ORA-01578SYSorclselect count(*) from scott

4、.tb_tmp;4、查询视图 v$database_block_corruption,提示有坏块,注意该视图可能不会返回任何数据,如无返回,在 rman 下执行 validatedatabaseSYSorcl select * from v$database_block_corruption;5、使用 blockrecover 恢复坏块RMAN blockrecover datafile 6 block 130;6、再次查询表 tb_emp 正常SYSorcl select count(*) from scott.tb_tmp;三、多块数据块损坏的恢复处理1、使用 linux dd 命令对不连

5、续块损坏oraclewl$ddof=/u01/app/oracle/oradata/orcl/tbs_tmp.dbfbs=8192conv=notrunc seek=133 EOF随意输入一些字符,用 EOF 结束oraclewl$ddof=/u01/app/oracle/oradata/orcl/tbs_tmp.dbfbs=8192conv=notrunc seek=143 EOF随意输入一些字符,用 EOF 结束oraclewl$ddof=/u01/app/oracle/oradata/orcl/tbs_tmp.dbfbs=8192conv=notrunc seek=153 alter s

6、ystem flush buffer_cache;3、下面提示块 133 被损坏,注意损坏了多块数据块,但查询时,从块号最小的开始提示,如 133 被修复后还有坏块则继续提示133 之后的坏块SYSorclselect count(*) from scott.tb_tmp;4、查询视图 v$database_block_corruption,提示有坏块,注意该视图可能不会返回任何数据,如无返回,在 rman 下执行 backupvalidate datafile 6;SYSorcl select * from v$database_block_corruption;no rowected5、使

7、用 backup validate 来校验数据文件RMAN backup validate datafile 6;6、再次查询 v$database_block_corruption,表明有 3 个损坏的块SYSorcl select * from v$database_block_corruption;7、使用 blockrecover corruption list 恢复刚刚被校验的坏块RMAN blockrecover corruption list;8、验证SYSorcl select count(*) from scott.tb_tmp;四、坏块的对象定位1、询块号为 163 上的对

8、象SYSorclselectdbms_rowid.rowid_object(rowid)object_id,dbms_rowid.rowid_relative_fno(rowid)file_id,dbms_rowid.rowid_block_number(rowid)block_id,owner,object_name,object_idfromscott.tb_tmpwheredbms_rowid.rowid_block_number(rowid)=163andrownumselectowner,object_name,object_idfromscott.tb_tmp where obje

9、ct_id in(2364,2365);3、使用 dd 命令损坏单数据块oraclewl$ddof=/u01/app/oracle/oradata/orcl/tbs_tmp.dbfbs=8192conv=notrunc seek=163 selectowner,object_name,object_idfromscott.tb_tmp where object_id in(2364,2365);5、位于损坏块上的数据无法被查询到,但对于未损坏的依旧可以查询。下面查询块 161 上的对象SYSorclselectowner,object_name,object_idfromscott.tb_tm

10、p where dbms_rowid.rowid_block_number(rowid)=161and rownumbackup datafile 6 ;7、需要设定允许损坏块的数量之后才能进行备份RMAN runset maxcorrupt for datafile 6 to 1;backup datafile 6 ;五、总结1、对于受损的数据块,仅仅坏块上的数据无法被查询或,其余正常块的数据依旧可以使用。2、对于受损的表对象进行聚合等相关运算时收到错误提示,因为坏块上的数据无法被统计。如果你聚合的是索引列,索引未损坏的情形则可正常返回。3、可以基于 RMAN 可用的备份文件实现块介质恢复,其数据文件无需 offline,开销最小,影响最小。4、对于多个数据块的损坏,先执行 backup validate 校验数据库或 相 应 的 数 据 文 件 以 便 标 记 受 损

温馨提示

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

评论

0/150

提交评论