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

2016-01-29 14:48 13 1 收藏

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

【 tulaoshi.com - Oracle教程 】

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-01628:max # of extents num reached for rollback segment num

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

产生原因:这种错误通常为一个回滚段和一个表空间已经达到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更改其名字,然后再装载表回数据库。

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

一个报错例子如下:

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.

来源:http://www.tulaoshi.com/n/20160129/1494266.html

延伸阅读
标签: windows系统
win8.1错误代码80073712怎么解决?   win8.1update错误代码80073712解决方法: 许多用户反映在安装Win8.1 Update时会出现这样的一条信息;无法完成升级,撤销更改,然后便出现错误代码80073712,同样也没有提供任何详细信息告知用户如何可以修复这一问题。 微软社区论坛的一名用户写道:KB2919355的安装很快便完成74%,...
标签: windows系统
Win8/Win8.1常见错误代码解决办法汇总   2014年4月8日,WinXP将于正式停止服务,一个时代即将结束,有专家称,停止服务后继续用XP系统10分钟就可能会受到攻击,因此这个系统估夸张点说估计是不能用了,毕竟已经跟不上时代。那我们刚装上Win8/Win8.1的小伙伴们还适应吗?为此,笔者把一些常见系统错误和解决方案汇汇总,大家查查看。 ...
标签: 电脑入门
在Excel中制表的时候经常会使用一些函数和公式,只要使用不当就会返回一些错误代码。当然,出现这些错误代码的原因往往是我们操作有误所造成,我们可以根据 Excel中提示的错误代理来分析具体什么原因,以便能够准确的解决问题!前面已经给大家分析了几种常见的错误代码,今天再来讲讲代码 #NAME?。 错误代码:#NAME? 第一种情况:如果公式返...
出现数据库的连接问题可在命令行下使用 tnsping 服务名 来检查出错原因。 常见错误有: ORA-12535: TNS: 操作超时 首先关闭防火墙,这是最常见的连接出错原因。 如果仍然不行,检查 tnsnames.ora 文件配置,主要是主机名称是否正确 # TNSNAMES.ORA Network Configuration File: E:oracleora92etworkadminnsn...
Google Play商店错误代码   错误:Error 101 原因:由于安装了太多应用而无法下载 解决:卸载一些用不到的应用,或者清空 Google 错误:Error 403 问题:无法下载应用 原因:同一设备上使用两个 Google 账户购买应用 解决:登陆 Google Play,卸载用其他账户购买的应用,尝试用当前账户重新购买。 ...