数据块损坏修复数据相关工具

DBV

全称DBVERIFY,用来检测数据文件数据块的逻辑损坏。用法:
dbv file=xxx blocksize=8192
dbv检测数据块的头部和尾部,如果第一次发现两者不匹配,会再读取一次;如果匹配了,那么就报出这个数据块是influx,如果第二次校验还是不匹配,那么就认为这个块是corrupted。之所以重复检查,是在某些请况下,比如dbw0进程在写入一个新版本的块,而dbv这时候读取了部分新版本,部分旧版本的数据块,这时候头尾的值就不匹配,但是并不能说数据块损坏。
如果file制定了osm文件,那么需要加userid选项,例如:

dbv userid=sys/oracl file=+orcldg/orcl/datafile/UNDOTBS1.258.9222922

否则会报错:


DBVERIFY: Release 11.2.0.4.0 - Production on Mon Sep 12 14:33:57 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBV-00008: USERID must be specified for OSM files

10231 event

10231事件使全表扫描可以跳过坏块,设置该事件后exp导出表数据,然后导入重建。

RMAN bmr

rman 可以使用备份修复数据块
语法:

blockrecover datafile xx block xxx

ctas

创建一张表,使用rowid访问,将损坏的数据块的数据插入该临时表,比如损坏了某文件的2号数据块:

create table temp as select * from xxx where 1=2;
insert into temp select * from xxx where rowid < dbms_rowid.rowid_create(rowid_type,object_number,relative_fno,3,row_number);
insert into temp select * from xxx where rowid > dbms_rowid.rowid_create(rowid_type,object_number,relative_fno,1,row_number);

BBED

bbed全称block brower/editor。
使用之前需要relink:
ssbbded.o和sbbdpt.o文件放到 ORACLEHOME/rdbms/libbbedus.msb ORACLE_HOME/rdbms/mesg目录下。

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed(/usr/ccs/bin加入环境变量)

语法:bbed listfile=xxx mode=xxx
密码:blockedit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值