ORA-00600: internal error code
What causes this error?
ORA-600 is an internal error generated by the generic kernel code of the Oracle RDBMS software. It is different from other Oracle errors in many ways. The following is a list of these differences:
1. An ORA-600 error may or may not be displayed on the screen. Therefore, screen output should not be relied on for capturing information on this error. Information on ORA-600 errors are found in the database alert and trace files. We recommend that you check these files frequently for database errors. (See the Alert and Trace Files section for more information.)
2. Each ORA-600 error comes with a list of arguments They usually enclosed in square brackets and follow the error on the same line for example:
3. Also some time, if we have used many cte's in a SP then it throws same error because of memory used by these ctc's exceed.
Each argument has a specific meaning which can only be interpreted by an Oracle support analyst. The arguments may also change meaning from version to version therefore customers are not advised to memorize them.
4. Every occurrence of an ORA-600 should be reported to Oracle Support. Unlike other errors, you can not find help text for these errors. Only Oracle technical support should diagnose and take actions to prevent or resolve damage to the database.
5. Each ORA-600 error generates a database trace file.
Possible causes include:
- file corruption,
- failed data checks in memory, hardware, memory, or I/O messages,
- incorrectly restored files
- a SELECT FROM DUAL statement in PL/SQL within Oracle Forms (you have to use SELECT FROM SYS.DUAL instead!)
How to fix it
Contact Oracle Support with 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 of the error
- any unusual circumstances that occurred prior to receiving the ORA-00600 message.
- contents of any trace files generated by the error
- the relevant portions of the Alert file
- in Oracle Forms PL/SQL, use SELECT FROM SYS.DUAL to access the system "dual" table
- Sometimes gathering statistics on the involved tables resolves the problem.
- Deleting statistics for a table involved would also solve the problem
- Try to reduce the no of CTE blocks in Stored Procedure.It's work in some scenarios as oracle doesn't support more than 20 cte's in single SP.