Skip to content
Home » Oracle » How to Resolve ORA-00600: [kdu_array_buf non-zero delta]

How to Resolve ORA-00600: [kdu_array_buf non-zero delta]

kdu_array_buf non-zero delta

An user reported ORA-00600 when updating a table. For example:

SQL> update pay_hist set is_paid = 'Y' where ow is null;
...
ERROR at line 1:
ORA-00600: internal error code, arguments: [kdu_array_buf non-zero delta], [], [], [], [], [], [], [], [], [], [], []

ORA-00600 is an internal error which is caught but unable to be handled by Oracle instance, the most important hint is the first argument in the error message, you can use it to lookup the true cause on MOS. To use ORA-00600 and ORA-07445 look-up tool, you need an Oracle account to access MOS.

In this case, the first argument is kdu_array_buf non-zero delta. As always, the first argument provides little to no hint.

Solution

According to MOS, it's the bug 32936402, the only solution to fix the bug is to update your database to 19.14 or 21.5, and with no luck, the document provides no workaround.

Next, let's see how I solve or workaround it.

Reorganize the table

In the beginning, I suspected that the table has some defects on storing explicit NULL value while data loading or insert, so the first idea in my mind is to refresh its segment.

So the first way is to move the table to another tablespace to make the table have a fresh, healthy and compact body.

Duplicate the table

The second way is to make a new table of the original one by CTAS to another tablespace, then switch their places by renaming tables.

After that, we have both original and duplicated ones. Although they look the same, I know they are slightly different.

No Explicit NULL

If the column is already nullable, don't explicitly provide NULL in data loading or bulk insert, just leave it and make it NULL naturally.

To change a NOT NULL column into nullable, you may revert the column's attribute or drop the constraint.

After that, you may load your data again.

Alternative Data Loading

Sometimes, JDBC or native drivers may not serve your data well, you need to change the way to load your data. For example:

  • Prepare INSERT statements file to execute.
  • Use SQL*loader in heterogenous conditions.
  • Insert data via some database link over network.
  • Use data pump to export and import.

Above solutions (or workarounds) should be enough to solve your problem.

Leave a Reply

Your email address will not be published. Required fields are marked *