In this post i am going to discuss how to resolve ORA-00600: internal error code, arguments: [qertbFetchByRowID]
ORA-00600: internal error code, arguments: [qertbFetchByRowID] error represents that an index and a table entries are out of sync or underlying index is corrupt.
In this case just check the trace file for current SQL statement for that session. Once we get the SQL statement and table name from the session trace file we can easily find out the index name as shown in this example.
Try to validate the table structure using command.
SQL> analyze table gl.gl_interface validate structure cascade;
analyze table gl.gl_interface validate structure cascade
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
Check the trace file create by above statement in udump folder and search for following text
Table/Index row count mismatch
table 48068 : index 239744, 191029
Index root = tsn: 4 rdba: 0x0d00438b
In above example rdba value is in HEXADECIMAL, Convert rdba: 0x0d00438b to decimal value like 0x0d00438b is equivalent to 218121099.
Now use statement given below to find out Header_file and Header_block.
SQL> select dbms_utility.data_block_address_file(218121099) "Rfile#"
,dbms_utility.data_block_address_block(218121099) "Block#"
from dual;
Rfile# Block#
---------- ----------
52 17291
Once you get the Header_file and Header_Block use the SQL statement to find out the segment name and segment type.
SQL> select owner, segment_name, segment_type
from dba_segments
where header_file = 52
and header_block = 17291;
OWNER SEGMENT_NAME SEGMENT_TYPE
------------------------------------------------------------------
GL GL_INTERFACE_N1 INDEX
Once you get the index name, you can rebuild index or drop it and recreate it.
SQL> drop index GL.GL_INTERFACE_N1;
CREATE INDEX GL.GL_INTERFACE_N1 ON GL.GL_INTERFACE
(USER_JE_SOURCE_NAME, SET_OF_BOOKS_ID, GROUP_ID)
NOLOGGING
TABLESPACE APPS_TS_INTERFACE
PCTFREE 0
INITRANS 11
MAXTRANS 255
STORAGE (
INITIAL 128K
NEXT 128K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
SQL> analyze table gl.gl_interface validate structure cascade;
Table analyzed.
Now you wouldn't get the ORA-00600 error anymore.
Wednesday, July 8, 2009
Subscribe to:
Post Comments (Atom)
In my Oracle database I also had the problem of ORA-0600 with the parameter qertbFetchByRowID. In my 3 trace files I found the query that causes this error.
ReplyDeleteI ran the Analyze but found no problem. My environment is an Oracle RAC with Dataguard mirrored with operating system Red Hat Enterprise 5.0.
I consider that my ORA-0600 can be another internal error in Oracle?
Do you see any other error ORA- errors in your trace file or alert log file?
ReplyDeleteMan, you just saved my life. Sorry for my pour english.
ReplyDeleteHugs from Brazil! :)
Thank you very much... the rebuild of indexes on my table worked :-)
ReplyDeleteThank you, the rebuild of indexes on my table worked and solved this problem :-)
ReplyDeleteThank you, the rebuild of indexes on my table worked and solved this problem :-)
ReplyDeletegood to know that.
Delete