ORA-00607:ORA-00600:

今天过程跑数的时候报:

ORA-06512: at "HBKF_CRM.PROC_LINK_INSERT", line 182
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [kddummy_blkchk], [5], [427936], [18038], [], [], [], []
ORA-06512: at line 1

感谢:http://www.linuxidc.com/Linux/2012-10/71987.htm 给提供的解决方法。

原文如下:

前些天Oracle数据库服务器出现了一下错误:

SQL*Loader-961:  对表 table1 调用一次/加载完成时出错 
ORA-00607: Internal error occurred while making a change to a data block 
ORA-00600: internal error code, arguments: [kddummy_blkchk], [8], [565129], [18021], [], [], [], []

SQL*Loader-2026:  加载因 SQL 加载程序无法继续而被终止

关于ORA-00600错误描述:

引用
ORA-00600: internal error code, arguments: [string], [string], [string], [string], [string], [string], [string], [string], [string], [string], [string], [string] 
Cause: This is the generic internal error number for Oracle program exceptions. It indicates that a process has encountered a low-level, unexpected condition. The first argument is the internal message number. This argument and the database version number are critical in identifying the root cause and the potential impact to your system. 
Action: Visit My Oracle Support to access the ORA-00600 Lookup tool (reference Note 600.1) for more information regarding the specific ORA-00600 error encountered. An Incident has been created for this error in the Automatic Diagnostic Repository (ADR). When logging a service request, use the Incident Packaging Service (IPS) from the Support Workbench or the ADR Command Interpreter (ADRCI) to automatically package the relevant trace information (reference My Oracle Support Note 411.1). The following information should also be gathered to help determine the root cause: 
- changes leading up to the error

- events or unusual circumstances leading up to the error

- operations attempted prior to the error

- conditions of the operating system and databases at the time of the error Note: The cause of this message may manifest itself as different errors at different times. Be aware of the history of errors that occurred before this internal error.

关于ORA-00607错误描述:

引用
ORA-00607: Internal error occurred while making a change to a data block 
Cause: An internal error or memory exception occurred while Oracle was applying redo to a data block.
Action: call Oracle Support

参考了网上的一些资料,通过以下操作解决ORA-00600和ORA-00607错误: 
Ora-00600解决步骤--代码

  1. sqlplus /nolog  
  2. conn / as sysdba;  
  3. #查看undo的表空间管理方式应该是auto  
  4. show parameter undo;  
  5. #修改undo的表空间管理方式为manual  
  6. alter system set undo_management=manual scope=spfile;  
  7. shutdown immediate;  
  8. startup;  
  9. #创建undo临时表空间  
  10. create undo tablespace undo2 datafile '/opt/oradata/tgt/undo2.dbf' size 200M;  
  11. #修改undo表空间为undo2  
  12. alter system set undo_tablespace=undo2 scope=spfile;  
  13. #将undo表空间管理模式修改为auto  
  14. alter system set undo_management=auto scope=spfile;  
  15. shutdown immediate;  
  16. startup;  
  17.  
  18. 执行完以上操作后为发现ORA-00600错误,说明重建表空间问题解决,接下来将undo表空间改回undotbs1  
  19.  
  20. drop tablespace undotbs1 including contents and datafiles;  
  21. create undo tablespace undotbs1 datafile '/opt/oradata/tgt/undotbs1.dbf' size 500M;  
  22. alter system set undo_management=manual scope=spfile;  
  23. shutdown immediate;  
  24. startup;  
  25. alter system set undo_tablespace=undotbs1 scope=spfile;  
  26. alter system set undo_management=auto scope=spfile;  
  27. shutdown immediate;  
  28. startup;  
  29. #删除刚刚临时重建的undo2表空间  
  30. drop tablespace undo2 including contents and datafiles; 

Ora-00607解决步骤--代码

    1. 大致确定是由于块当中存在逻辑讹误导致的这个错误  
    2. {当Oracle进程在读取数据块时会做一系列逻辑检测,当发现块当中存在逻辑讹误就会触发该ORA-00600 [kddummy_blkchk]等内部错误;[kddummy_blkchk]内部函数  
    3. 的功能大致与[kdBlkCheckError]相仿,它们都有3个参数argument:  
    4. ORA-600 [kddummy_blkchk] [file#] [block#] [check code]  
    5. ORA-600 [kdBlkCheckError]   [file#] [block#] [check code]  
    6. file#即问题块所在datafile的文件号,block#即问题块的块号,check code为发现逻辑讹误时的检测种类代码  
    7. }  
    8. 我们也可以通过file#和block#查找到存在问题的对象:譬如这个case中的file#为121,block#为2275853,检查种类代码为18021:  
    9. SELECT tablespace_name,segment_type,owner,segment_name  
    10. FROM dba_extents  
    11.  WHERE file_id = 8
    12. AND 565129 between block_id AND block_id+blocks-1;  
    13. 查询结果如:  
    14. TABLESPACE_NAME                SEGMENT_TYPE       OWNER     SEGMENT_NAME  
    15. ------------------------------ ------------------ ------------------------------  
    16. DATA01                         TABLE              USER1     TABLE1  
    17. 该查询结果中的表需要重建,问题解决。 

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

自己的一点见解:

SELECT tablespace_name,segment_type,owner,segment_name
FROM dba_extents
WHERE file_id = 5
AND 427936 between block_id AND block_id+blocks-1;

 

显示结果:

1 USERS TABLE HBKF_CRM OD_V_PROD_INFO_MON

备份表:OD_V_PROD_INFO_MON

drop 掉OD_V_PROD_INFO_MON,

create 表OD_V_PROD_INFO_MON as 备份表。

重新跑过程,顺利通过。没有重启数据库?!

 

posted @ 2012-11-14 11:26  Alex-Zeng  阅读(842)  评论(0编辑  收藏  举报