ORA-01578:Oracle data block corrupted(file # num,block # num) ....">

当前位置:  数据库>oracle

ORACLE常见错误代码的分析与解决二

    来源: 互联网  发布时间:2014-09-07

    本文导语:  正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决二。  -------------------------------------------------------------------------------- p align="JUSTIFY">ORA-01578:Oracle data block corrupted(file # num,block # num) 产生原因:当ORACLE访问一个数据块时...

正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决二。 


--------------------------------------------------------------------------------

p align="JUSTIFY">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$#@62;Select owner,segment_name,segment_type from dba_extents where file_id=$#@60;F$#@62; and $#@60;B$#@62; between block_id and block_id+blocks-1;($#@60;F$#@62;和$#@60;B$#@62;分别是ORA-01578报出的坏块出现的文件号和块号)


如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)): 

SQL$#@62;Analyze table $#@60;table_name$#@62; validate structure cascade;

执行该命令后,可能会出现以下的结果:

ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:

$#@60;1$#@62;.先关闭数据库

$#@60;2$#@62;.编辑init$#@60;sid$#@62;.ora文件,加入:

event=”10231 trace name context forever,level 10”

$#@60;3$#@62;.startup restrict

$#@60;4$#@62;.创建一个临时表:SQL$#@62;create table errortemp as select * from error;(error是坏表的表名)

$#@60 #@62;.把event从init$#@60;sid$#@62;.ora文件中删掉并重起数据库

$#@60;6$#@62;.rename坏表,把临时表rename成坏表的表名

$#@60;7$#@62;.创建表上的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-01628:max # of extents num reached for rollback segment num

产生原因:这种错误通常为一个回滚段和一个表空间已经达到MAXEXTENTS参数设置的极限。要注意的是这个MAXEXTENTS不是该回滚段或表空间的硬件极限,硬件极限取决于数据库创建时在init.ora文件中指定的DB_BLOCK_SIZE参数的值。

解决方法:使用SQL命令ALTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)来增加 MAXEXTENTS,其中“XXXX”值必须大于错误信息中所指的数值,但不能大于LARGEST MAXEXTENT的值,如果已经达到了LARGEST MAXEXTENT VALUE,解决的办法就是重新创建较大的范围尺寸,使用带有选项COMPRESS=Y的Export工具导出表,如果表空间有可用空间,先给表做一个备份,用alter tablespace tablespace_name更改其名字,然后再装载表回数据库。

查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。

一个报错例子如下:

ORA-1628:max # extents 50 reached for rollback segment RBS_1

相应的英文如下:

Cause: An attempt was made to extend a rollback segment that already has reached its maximum size or space could not be allocated in the data dictionary to contain the definition of the object.

Action:If possible,increase the value of either the MAXEXTENTS or PCTINCREASE initialization parameters or find the data dictionary table lacking space and alter the storage parameters,as described in the Oracle8 Server Administrator's Guide. 


    
 
 

您可能感兴趣的文章:

  • 最常见的问题:哪里有Oracle7.3 for sco5.0.5的下载?
  • Oracle 10G安装中一些常见问题解决
  • Oracle插入日期数据常见的2个问题和解决方法
  • Oracle Index 的三个常见问题
  • ORACLE数据库应用开发常见问题及排除
  • Linux下Oracle常见安装错误总结及参考案例
  • Oracle常见错误诊断
  • oracle代码的常见错误汇总
  • Windows Oracle常见服务介绍
  • ORACLE常见错误代码的分析与解决(一)
  • 常见数据库系统比较 Oracle数据库
  • Oracle数据库常见技术问题解答篇
  • ORACLE常见错误代码的分析与解决(二)
  • Oracle数据库TNS常见错误的解决方法汇总
  • ORACLE常见错误代码的分析与解决三
  • ORACLE常见错误代码的分析与解决(三)
  • Oracle常见错误代码的分析与解决
  • JDBC连接Oracle数据库常见问题及解决方法
  • oracle 常见等待事件及处理方法
  • Oracle中常见的33个等待事件小结
  • 安装Oracle加载数据库错误areasQueries的解决
  • 我在安装oracle的时候出现了这个错误,请懂行人赐教~~附图!~~
  • 记录Linux下一次oracle启动错误
  • shell如何获取oracle错误码 在线等
  • Linux系统下安装Oracle X11错误解决办法
  • 求助前辈们:solaris 10 x86 安装oracle 10g 错误
  • 有 ORACLE 错误码文档吗? 谢谢大家!
  • Eclipse连接Oracle数据库的ORA-00604 ORA-12705错误
  • ORACLE安装时/tmp/orainstRoot.sh 执行发生错误
  • 关于提高Oracle数据库性能的四个错误认识
  • C++使用OCCI连Oracle10g的错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle 创建表空间步骤代码
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • Oracle E-Business套件多个认证绕过及代码注入漏洞
  • Linux下Oracle归档日志自动清理脚本代码(sh)
  • ProC 连接Oracle代码
  • oracle查看会话锁定的所有对象代码分享
  • Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
  • 怎样在c语言的代码里内嵌的操作oracle数据库,各位大虾谢谢了
  • Linux oracle数据库自动备份自动压缩脚本代码
  • linux下用什么办法连接oracle数据库并且读取数据呢?(用c++代码实现时)
  • oracle命令行删除与创建用户的代码
  • oracle下实现恢复一个丢失的数据文件的代码
  • 谁有oracle存储过程的原代码?谢谢!
  • Java 获得Oracle 的错误代码
  • 那位兄弟给段代码:连接Oracle数据库的。
  • php连接oracle数据库的示例代码
  • Oracle向Linux kernel加入数据完整性代码
  • 在oracle下要在同一事务下插入多条记录,该怎么做??最好要有原代码
  • Oracle 外连接实现代码
  • Oracle跨数据库查询并插入实现原理及代码
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3