![]() |
【IT168 专稿】本文主要列举一些在Oracle数据库中常见的错误代码,并解释代码引起的原因。由于个人水平有限,并不能完全保证解决措施切实有效,欢迎读者朋友们发表对这些错误代码的解决办法,提出宝贵意见。
ORA-01578:Oracle data block corrupted(file # num,block # num)
原因分析:
当ORACLE试图访问一个未被格式化的系统块失败时;当数据文件部分溢出时;当操作系统发生I/O错误或出现缓冲问题时都有可能导致此错误。最有可能的还是数据出现坏块。
解决建议:
1. 使用如下命令检查问题所在:
Analyze table validate structure cascade;
2. 如果不能确定问题所在,又事先做过备份,那么最好是用此备份来恢复:先关闭数据库后在“init.ora”文件中加入event=”10231 trace name context forever,level 10”语句来取出坏块以外的数据;然后创建一个临时表,语句格式为:create table errortemp as select * from error;(error是坏表的表名);接着把“event”字段从“init.ora”文件中删除后再重启数据库;最后把刚才建立的临时表更名为坏表的表名,重建相关数据库相关字段数据即可。
ORA-01628:max # of extents num reached for rollback segment num
原因分析:
这类错误通常为一个回滚段和一个表空间已经达到MAXEXTENTS参数设置的极限而引起的。
解决建议:
查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建;如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。
ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME
原因分析:
用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。也就是说这是由回滚段表空间不足引起的。
解决建议:
1.使用下列的语句先查询一下剩余的tablespace空间:
Select user_name, sql_text from V$open_cursor where user_name=’’;
2. 然后使用如下命令向指定的数据增加表空间,根据情况可以增加一个或多个表空间。
ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file
ORA-01652:unable to extend temp segment by num in tablespace name
原因分析:
ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。也就是说这是由ORACLE临时段表空间不足引起的。
解决建议:
1. 首先使用下列类似语句查看指定表空间的可用空间:
Select file_id, block_id, blocks, bytes from sys.dba_free_space where tablespace_name=’’;
2. 然后通过下列类似语句修改用户的临时表空间大小:
ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;
ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?]
原因分析:
这种错误通常为ORACLE的内部错误,只对OSS和ORACLE开发有用。ORA-600的错误经常伴随跟踪文件的状态转储出现。另外在此类错误代码中,第一个变量标记出了代码中错误的位置,从第二个到第五个变量显示附加信息,告诉OSS代码在哪里出现了错误。
解决建议:
出现这类错误一般是无法解决的,只有从另外的方面入手。比如提高系统本身各方面来解决这个内部问题(增加硬件设备,调整系统性能等)。
