I have a PL/SQL function that I'm working with that sometimes compiles ok but sometime give me this error.
ORA-00600: internal error code, arguments: [17285], [0x318FDE2C], [1], [0x273F1C60], [], [], [], [], [], [], [], []
00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause: This is the generic internal error number for Oracle program
exceptions. This indicates that a process has encountered an
exceptional condition.
*Action: Report as a bug - the first argument is the internal error number
Disconnecting and reconnecting to the Oracle and the function compiles ok which feels crazy...
Googling the error code and argument gave me this
ERROR:
ORA-600 [17285] [a] [b] [c]
VERSIONS:
versions 7.0 to 10.1
DESCRIPTION:
Oracle is in the process of deleting an instantiation object when it
discovers that the object is currently on the call stack.
This should not occur and so ORA-600 [17285] is reported.
ARGUMENTS:
Arg [a] Instantiation object
Arg [b] Call stack nesting level
Arg [c] Library Cache Object Handle
FUNCTIONALITY:
Kernel Generic Instantiation manager
IMPACT:
PROCESS FAILURE
NON CORRUPTIVE - no corruption to underlying data.
SUGGESTIONS:
This error is usually accompanied by another error. Please check for this.
My function returns a custom table type pipelined. Most function code left out...
CREATE TYPE t_solexp_row AS OBJECT (
obj VARCHAR(30),
dt DATE,
param VARCHAR(30),
param_id NUMBER,
val NUMBER,
change_time TIMESTAMP
);
/
CREATE TYPE t_solexp_tab IS TABLE OF t_solexp_row;
/
CREATE OR REPLACE FUNCTION get_solexp_tab(p_start_date IN DATE, p_end_date IN DATE) RETURN t_solexp_tab PIPELINED AS
BEGIN
...
LOOP
PIPE ROW(t_solexp_row(...,...,...,...,...,...);
END LOOP;
...
RETURN;
END;
/
Any idea of what may cause this behavior?
This wasn't planned as a self answered question but I got an idea when i wrote it, thank you Stackoverflow! :)
I'm developing and testing the function in SQL Developer. The number of rows in the result set varies from just a few to many thousand depending on the arguments.
I noticed that the problem only occurs when the last result set contained over 50 records.
The problem seem to be that SQL Developer only fetches the first 50 rows from oracle initially, recompiling the function with data still in the pipeline causes the ORA-00600. Seems reasonable and matches the error description
Oracle is in the process of deleting an instantiation object when it
discovers that the object is currently on the call stack.
This should not occur and so ORA-600 [17285] is reported.
Phew, just happy that it's working now! Internal errors from the database engine is enough to give me the shivers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With