oracle常见错误代码的分析与解决(二)
原因是:当Oracle访问一个数据块时,它是由于硬件的1或i o错误,2,I/O错误或操作系统的缓冲问题,3,内存或分页问题引起的。
4,Oracle试图访问未格式化的系统块,以及5、部分数据文件溢出等。
物理坏块会在这个时候ora-01578错误报告。
解决方案:由于Oracle只在访问有问题的数据文件时报告错误,因此错误报告的时间可能晚于实际错误。
的ora-01578错误信息提示坏块指向用户自己的数据文件,它是由以下方法解决:
如果下列SQL语句标识的坏块出现在索引上,则只能重建索引。
已选择的主人,segment_name,从dba_extents哪里file_id =之间block_id和segment_type
block_id + blocks-1;(和文件的数量和ora-01578提出的,坏块数量分别)
如果一个坏块出现在表上,我们首先使用下面的句子来分析它是否是一个永久的坏块。建议执行一两次以帮助识别数据,坏块是永久的。
物理上的坏块)或随机性(内存或硬件错误):
分析表验证结构级联;
执行此命令后,可能会出现以下结果:
ora-01578:它具有相同的参数作为原始错误信息,这是一个永久性的物理或逻辑坏块。它与原始的错误信息有不同的参数,这可能与内存有关。
页面空间与I/O设备有关。
如果用户拥有表的最新备份,最好使用此备份来恢复表,或者使用事件10231除去坏块以外的数据。
首先关闭数据库
编辑init.ora文件,添加:
事件= 10231跟踪名称上下文,永远10级
启动限制。
创建一个临时表:SQL >创建表errortemp为SELECT * FROM误差;(误差是一个坏的表的表名)
从init.ora文件删除事件和数据库附加到数据库
重命名坏表,将临时表的表名重命名为坏表
在表上创建索引,等等。
如果ora-01578错误信息表明,糟糕的数据是指数据字典或回滚段,你应该Oracle公司立即联系和互相讨论。
好办法。
这里的解决方案是一个通用的手册,更具体的解决方案可以检查Oracle故障排除,并有过。
使用ROWID方法去除数据坏块以外的方法这里不作介绍。
相应的英语如下:
原因:给定的数据块已损坏,可能是由于程序错误造成的。
操作:尝试恢复包含给定数据块的段,这可能
并重新创建它,如果有跟踪文件,则报告消息
ora-01628:最大程度达到回滚段数# num
原因:这种错误通常是一个回滚段表空间,并达到了maxextents参数设置的限制。需要注意的是,这maxextents并不重要
是回滚段表空间的硬件限制,以及硬件的限制取决于值在init.ora文件中指定的db_block_size参数在数据库创建时。
解决方案:使用SQL命令ALTER TABLESPACE…存储(maxextents XXXX)增加maxextents,在XXXX的值必须大于
价值中提到的错误信息,但不大于最大maxextent值,如果最大的maxextent值已经达到,解决的办法是
若要重新创建更大的范围大小,请使用带有选项压缩的y输出工具导出表。如果表空间有可用空间,首先为表做准备。
复制、更名和修改表空间tablespace_name,然后加载到数据库中的表。
要查看错误发生在哪里,如果出现在回滚段或索引上,则必须删除并重建它。如果出现在临时表空间中,则修改临时表空间。
他们之间的记忆场可以解决这个问题。
一个错误的例子如下:
ora-1628:最大程度达到50 rbs_1 #回滚段
相应的英语如下:
原因:试图扩展已经回滚的段。
无法在数据字典中分配以包含定义
行动:如果可能的话,增加的价值是maxextents或pctincrease初始化
查找缺少空间的数据字典表并更改存储参数
服务器管理员指南。