这是ORACLE的内部报错
ause: This is a catchall internal error message for Oracle program exceptions. It indicates that a process has met a low-level, unexpected condition. Various causes of this message include: time-outs 
file corruption
failed data checks in memory 
hardware, memory, or I/O errors 
incorrectly restored files The first argument is the internal message number. Other arguments are various numbers, names, and character strings. The numbers may change meanings between different versions of the Oracle Server. Action: Report this error to customer support after gathering the following information: events that led up to the error 
the operations that were attempted that led to the error 
the conditions of the operating system and database at the time ofthe error 
any unusual circumstances that occurred before receiving theORA-00600 message
contents of any trace files generated by the error 
the relevant portions of the Alert fileNote: 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. 

解决方案 »

  1.   

    1.可能是oracle的bug,这样的话需要打补丁,不过先找找其它原因再说。
    2.用其它连接方式如sqlplus,是否可以执行?如果是的话可能是你使用的jdbc-driver有问题,尽量使用oracle9i本身带的jdbc驱动(classes12.jar)。
      

  2.   

    你很幸运,我刚刚解决完这个问题。
    解决方法如下:
    在alter.log 中找到错误block 
    grep blocknum alter**.log |sort |uniq 
    l 查出出错的表SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE file_id= FILE_ID AND block_id BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1 (其中file是文件号,block是块号,从错误信息中可以找到该信息) 
    l 使用db_repair修复 
    connect sys/chang_on_install 
    a. create_admin.sql 
    declare 
    begin 
    dbms_repair.admin_tables( 
    table_name =>'REPAIR_TABLE', 
    table_type=>dbms_repair.repair_table, 
    action=> dbms_repair.create_action, 
    tablespace => 'system'); 
    end; 
    b. orphan_create 
    declare 
    begin 
    dbms_repair.admin_tables ( 
    table_name =>’ORPHAN_KEY_TABLE’, 
    table_type=> dbms_repair.orphan_table, 
    action => dbms_repair.create_action, 
    tablespace =>'SYSTEM'); 
    end; 
    c. check_object 
    declare 
    rpr_count int; 
    begin 
    rpr_count :=0; 
    dbms_repair.check_object( 
    schema_name=>'OBS56', --(SCHEMA的名称﹐需求根据实际修改) 
    object_name=> 'ABS_PROD_BILL_20020521',--(表或索引名称﹐ 
    需要根据实际修改) 
    repair_table_name=> 'REPAIR_TABLE', 
    corrupt_count => rpr_count); 
    dbms_output.put_line('repair count:' || to_char(rpr_count)); 
    end; 
    d. fix_object 
    declare 
    fix_count int; 
    begin 
    fix_count :=0; 
    dbms_repair.fix_corrupt_blocks( 
    schema_name=>'OBS56', --(SCHEMA的名称﹐需求根据实际修改) 
    object_name=> 'ABS_PROD_BILL_20020521', --(表或索引名称﹐ 
    需要根据实际修改) 
    object_type=>dbms_repair.table_object, 
    repair_table_name=> 'REPAIR_TABLE', 
    fix_count => fix_count); 
    dbms_output.put_line('repair count:' || to_char(fix_count)); 
    end; 
    e.skip_object(当修复不成功时可以跳过该块) 
    begin 
    DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( 
    schema_name=>'OBS56', 
    --(SCHEMA的名称﹐需求根据实际修改) 
    object_name=>'ABS_PROD_BILL_20020521' 
    --(表或索引名称﹐--需要根据实际修改) 
    );end; 
    l 最后使用. 
    1. 停应用 
    2.rename A to B; 
    ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10'; 
    3.create table A as select * from B; 
    4.删除A上的index. 
    退出 
    重进入sqlplus 
    重新建立A上的index. 
    4. 检查其它的文件的坏块 
    l 检查其它的文件是否有坏块dbv file=’file name path’ 
     
    第二种方法:
    将出现坏块的表重建。