Wednesday, April 25, 2007

ORA-00600 Error : Basically, you're screwed.

Yesterday we started getting the dreaded 00600 error.  A little googling turns up little more than the fact that this is the rough equivalent of a "kernel panic" error in Oracle, and you're on your own to figure out what caused it.  Yes, you may have invoked a bug in Oracle itself.  Hard to really say.

What I can tell you in our case, if you're looking for clues, is that it showed up specifically when dealing with XmlType fields, and triggers.  I have one trigger on a table that inserts a row (containing XmlType fields) into another table.  That table has a trigger on insert that takes the incoming XML and does a few things to it.  Something in that combination of triggers is causing the value error to happen.  We're currently looking at ways to make them behave nicer with each other, including having the first one do a commit after insert, and having the second one do a trigger on "after insert" instead of 'before insert'.  If I find anything that makes the problem go away and is recreatable, I'll be sure to check back in.

Update #1: For the curious, our problem seems related to the moving around of XmlType fields that are greater than the 4k barrier.  I whittled down my trigger so that it was nothing but a modification to a single XmlType object in the newly inserted row, and could demonstrably show that inserting any value less than 4k worked properly, and any value greater than 4k threw the 00600 error.  I'm not really sure why that limit suddenly bit us, especially since this whole system was working last week and miraculously just stopped, but at least it's some new information. 


Technorati tags: , ,

No comments: