从备份中恢复坏块
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2009/09/corrupt_block_recover.html
链接:http://www.dbaroad.me/archives/2009/09/corrupt_block_recover.html
如果有备份,应该是坏块恢复中最容易的一种。其实就是一条blockrecover命令。
坏块的检测:
dbv file=D:\ORACLE\ORADATA\ORCL\USERS01.DBF blocksize=8192 DBVERIFY: Release 10.2.0.1.0 - Production on 星期六 9月 19 23:22:10 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. DBVERIFY - 开始验证: FILE = D:\ORACLE\ORADATA\ORCL\USERS01.DBF 页 620 标记为损坏 Corrupt block relative dba: 0x0100026c (file 4, block 620) Bad check value found during dbv: Data in bad block: type: 6 format: 2 rdba: 0x0100026c last change scn: 0x0000.001432de seq: 0x2 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x32de0602 check value in block header: 0x48ce computed block checksum: 0x100 DBVERIFY - 验证完成 检查的页总数: 1600 处理的页总数 (数据): 698 失败的页总数 (数据): 0 处理的页总数 (索引): 2 失败的页总数 (索引): 0 处理的页总数 (其它): 26 处理的总页数 (段) : 0 失败的总页数 (段) : 0 空的页总数: 873 标记为损坏的总页数: 1 流入的页总数: 0 最高块 SCN : 1323757 (0.1323757) |
查询坏块发生在哪个对象上:
sys@ORCL>SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME 2 FROM dba_extents WHERE file_id = 4 3 and 620 between block_id AND block_id + blocks - 1; OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME ---------- ---------------- ------------------ ---------------- SYS TAB_A TABLE USERS sys@ORCL>select count(*) from tab_a; select count(*) from tab_a * 第 1 行出现错误: ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 620) ORA-01110: 数据文件 4: 'D:\ORACLE\ORADATA\ORCL\USERS01.DBF' |
从备份中恢复:
RMAN> blockrecover datafile 4 block 620; 启动 blockrecover 于 19-9月 -09 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=144 devtype=DISK 通道 ORA_DISK_1: 正在恢复块 通道 ORA_DISK_1: 正在指定要从备份集恢复的块 正在恢复数据文件 00004 的块 通道 ORA_DISK_1: 正在读取备份段 D:\SCRIPT\BAK\FULL_ORCL_20090919_1_1 通道 ORA_DISK_1: 已从备份段 1 恢复块 段句柄 = D:\SCRIPT\BAK\FULL_ORCL_20090919_1_1 标记 = DB_FULL_BACKUP 通道 ORA_DISK_1: 块恢复完成, 用时: 00:00:02 正在开始介质的恢复 介质恢复完成, 用时: 00:00:07 完成 blockrecover 于 19-9月 -09 sys@ORCL>select count(*) from tab_a; COUNT(*) ---------- 99490 |
如果没有备份,估计情况会比较复杂。如果仅仅是发生在数据表空间,还可以尝试设置10231事件,跳过坏块进行数据恢复。
— The End –
关键字: 备份恢复


站内搜索