li
  当前位置:主页 > 性能优化 > 文章内容
li
ORA-01578:Oracle data block corrupted
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-04-15   阅读:13  
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语句查出的坏块出现有索引上,则只需重建索引即可  
  
SQL>Select owner,segment_name,segment_type from dba_extents where file_id= and between block_id and block_id+blocks-1;  
  
  (和分别是ORA-01578报出的坏块出现的文件号和块号)  
  
  如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)): SQL>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等  
如果ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。  
  
  这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了。  
  
  相应的英文如下:  
  
Cause:The given data block was corrupted,probably due to program errors  
  
Action:Try to restore the segment containing the given data block,This may involve dropping the segment and recreating it,If there is a trace file,report the messages recorded in it to customer support.



  上一篇: ORA-01652:unable to extend tem...   下一篇: Oracle的sql*plus使用小结
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·ORA-01652:unable to extend tem...
·ORA-01650:unable to extend rol...
·ORA-01599与max_rollback_segmen...
·ORA-600 [qmxiUnpPacked2]错误的...
·oracle中各种sql语句的多种写法
·Oracle中的Hash Join详解
·如何将高级复制队列表移出系统(S...
·高级复制的整体规划策略
·oracle 高级复制中ORA-25207错误...
·oracle ORA-01555错误完全解析之...
·Oracle的sql*plus使用小结
·oracle 数据库的启动和关闭深入分...
·ORA-00600:internal error code,...
·ORA-03113:end-of-file on comm...
·Oracle数据库日志文件深入分析
·oracle联机日志文件REDO LOGFILE...
·再谈ORA-01034 错误的解决办法
·oracle9i特性之数据库监控系列的...
·oracle 9i特性之—在线表格重定义...
·oracle ASSM内部存储研究大揭密
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接