Oracle block corruption 坏块

坏块的常见原因:

硬件损坏
操作系统问题
Oracle的问题
从UNRECOVERABLE或者NOLOGGING来恢复引起的ORA-1578错误

类型:

这里的物理/逻辑损坏和我们想象的不一样,一般认为硬件/存储的损坏就是物理损坏。逻辑的损坏是block上的数据不对。但是oracle的定义却是下列:
1. 物理损坏
内部数据结构损坏,oracle数据库已经不能找到用户的数据。
错误号是ORA-1578,并在alert.log中有错误信息
a. 块头不正确
b. 块头和块尾不一致
c. 块的checksum不正确
d. 块的checksum正确,但是块的内容属于另外一个块。

2. 逻辑损坏
Oracle数据库能找到用户的数据, 但是数据不正确。
块的checksum正确,块的内容不正确
a. row locked由于不存在的事务
b. 使用空间的大小不等于块的大小
c. avsp是坏的
tosp is the total of all free space in the block
avsp is the readily available free space in the
   free space area that can be used without needing
   to coalesce the other free space fragments in the block, if any

解决步骤:
1. 确定损坏严重程度
可以用dbv,rman,dd或者检查硬件来确定损坏程度.
dbv file=/oradata/test01.dbf
rman> backup validate check logic database
rman> backup validate check logic datafile 1;

2. 替换损坏的硬件
3. 确定哪个数据库对象受影响
SQL> SELECT tablespace_name, segment_type, owner, segment_name
 FROM dba_extents
WHERE file_id = &AFN
 and &BL between block_id AND block_id + blocks - 1
;

4. 选择最合适的恢复方案
完全恢复:如果数据库很大的话,完全恢复可能需要很长的时间。

block level recovery
如果有包含文件的备份和archivelog,那么可以用block recovery。可以从磁带库中
恢复文件的备份,并恢复archivelog到默认路径。
rman> run{blockrecover datafile 5 block 131;}

datafile recovery

a. 先offline数据文件
SQL> alter database datafile '/oradata/test01.dbf' offline;

b. 还原数据文件
rman> restore datafile '/oradata/test01.dbf';
如果有standby数据库的话,可以copy从库的数据文件。
rman> copy datafile '/oradata/test01.dbf' to '/tmp/test01.dbf';
拷贝数据库文件到主库
恢复数据文件

c. recover datafile '/oradata/test01.dbf';
online数据文件
SQL> alter database datafile '/oradata/test01.dbf' online;

database recovery

对象可以重建,比如index
不完全恢复

模拟坏块:
用户先获取记录的文件号和行号
select id,rowid,dbms_rowid.rowid_relative_fno(rowid)||'_'
||dbms_rowid.rowid_block_number(rowid)
from test;
通过dd或者BBED来模拟坏块:
dd f=/oradata/test01.dbf seek=131 bs=8192 count=1 conv=notrunc < CORRUPT CORRUPT CORRUPT CORRUPT CORRUPT CORRUPT CORRUPT CORRUPT
EOF

参考链接:

http://space.itpub.net/23071790/viewspace-703302
http://blog.csdn.net/tianlesoftware/article/details/5024966
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=840978.1
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=472231.1
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=28814.1

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

转载于:http://blog.itpub.net/25105315/viewspace-712149/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值