这是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.
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.
2.用其它连接方式如sqlplus,是否可以执行?如果是的话可能是你使用的jdbc-driver有问题,尽量使用oracle9i本身带的jdbc驱动(classes12.jar)。
解决方法如下:
在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’
第二种方法:
将出现坏块的表重建。