修复坏块
测试一用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博客 ” ,链接:https://blog.itpub.net/8102208/viewspace-485830/ ,如需转载,请注明出处,否则将追究法律责任。