度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1265|回复: 2
打印 上一主题 下一主题

[分享] ORA-01578:Oracle data block corrupted错误的分析

[复制链接]

348

主题

3572

帖子

9333

积分

论坛元老

Rank: 8Rank: 8

积分
9333
跳转到指定楼层
楼主
发表于 2020-2-22 20:56:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ORA-01578:Oracle data block corrupted(file # num,block # num)
产生原因:当ORACLE访问一个数据块时,由于:
1、硬件的I/O错误;  
2、操作系统的I/O错误或缓冲问题;  3、内存或paging问题;  
4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

解决方式:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,
如果ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:

如果通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可。
  1. Select owner,segment_name,segment_type from dba_extents  where file_id=<F> and <B> between block_id and block_id+blocks-1;
  2. (<F>和<B>分别是ORA-01578报出的坏块出现的文件号和块号)
复制代码
如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):

  1. Analyze table validate structure cascade;
复制代码
执行该命令后,可能会出现以下的结果:  
ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。  
如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:
<1>.先关闭数据库  
<2>.编辑init.ora文件,加入:
event=”10231 trace name context forever,level 10”


<3>.startup restrict  
<4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)  
<5>.把event从init.ora文件中删掉并重起数据库。

<6>.rename坏表,把临时表rename成坏表的表名
<7>.创建表上的INDEX等

这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有涉及使用ROWID方法来取出坏块以外的数据的方法。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9333

积分

论坛元老

Rank: 8Rank: 8

积分
9333
沙发
 楼主| 发表于 2020-2-22 20:57:11 | 只看该作者
来点有深度的,学习学习

点评

果然,很有深度,很详细!  详情 回复 发表于 2020-2-23 14:28
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-2-23 14:28:55 | 只看该作者
万望 发表于 2016-3-22 20:57
来点有深度的,学习学习

果然,很有深度,很详细!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-27 10:57 , Processed in 0.177184 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表