ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 修复坏块

修复坏块

原创 Linux操作系统 作者:victor1010 时间:2008-11-05 13:52:41 0 删除 编辑

修复坏块
测试一用10231事件:
1、问题
sys@ORA10G> select count(*) from tstuser.t_block;
select count(*) from tstuser.t_block
                             *
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 9, 块号 72)
ORA-01110: 数据文件 9: 'E:\ORACLE\ORADATA\ORA10G\BLOCK.DBF'


2、
运行下面的查询,根据,坏块的file_id,block id查找该块对应的owner,segment_type,segment_name等信息

  

    select owner,file_id,segment_name, segment_type, block_id, blocks
  from dba_extents
  where  file_id=13 and block_id<=1234 and (block_id + blocks- 1) >= 1234;

3、
设置10231事件:
sys@ORA10G> alter system set events='10231 trace name context forever ,level 10';

系统已更改。

4、
关闭10231事件:
sys@ORA10G> alter system set events='10231 trace name context off';

系统已更改。

测试二,用RMAN恢复:
1、发现坏块

sys@ORA10G> select count(*) from tstuser.t_block;
select count(*) from tstuser.t_block
                             *
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 9, 块号 59)
ORA-01110: 数据文件 9: 'E:\ORACLE\ORADATA\ORA10G\BLOCK.DBF'
2、DBV检查
C:\>dbv file=E:\oracle\oradata\ora10g\BLOCK.DBF

DBVERIFY: Release 10.2.0.1.0 - Production on 星期三 11月 5 13:16:31 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - 开始验证: FILE = E:\oracle\oradata\ora10g\BLOCK.DBF
页 59 标记为损坏
Corrupt block relative dba: 0x0240003b (file 9, block 59)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x0240003b
 last change scn: 0x0109.100da845 seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0xa8450601
 check value in block header: 0xf242
 computed block checksum: 0xc520

 

DBVERIFY - 验证完成

检查的页总数: 128
处理的页总数 (数据): 109
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 18
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 0
标记为损坏的总页数: 1
流入的页总数: 0
最高块 SCN            : 269330503 (265.269330503)

3、RMAN恢复

RMAN> blockrecover datafile 9 block 59 from backupset;

启动 blockrecover 于 05-11月-08
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=129 devtype=DISK

通道 ORA_DISK_1: 正在恢复块
通道 ORA_DISK_1: 正在指定要从备份集恢复的块
正在恢复数据文件 00009 的块
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\ORADATA\BK\1_1_ORA10G.BK
通道 ORA_DISK_1: 已从备份段 1 恢复块
段句柄 = E:\ORACLE\ORADATA\BK\1_1_ORA10G.BK 标记 = TAG20081104T170826
通道 ORA_DISK_1: 块恢复完成, 用时: 00:00:04

正在开始介质的恢复
介质恢复完成, 用时: 00:00:07

完成 blockrecover 于 05-11月-08

 

sys@ORA10G> select count(*) from tstuser.t_block;

  COUNT(*)
----------
      6278

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8102208/viewspace-485830/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 重建CONTROLFILE
请登录后发表评论 登录
全部评论

注册时间:2008-04-29

  • 博文量
    296
  • 访问量
    568256