2011-11-17

ORA-07445 [__INTEL_NEW_MEMCPY()+382] [SIGILL]

an ugly oracle bug which apeears in 11.2.0.2 (with or without PSU ).
see also http://marist89.blogspot.com/2011/09/interesting-error.html

The original cause may be  here : http://oradbastuff.blogspot.com/2011/06/bug-of-jdbc-102-with-jdk-15.html 

intel_new_memcpy ( __INTEL_NEW_MEMCPY ) problems are related to bad data

ORA-04030: (Kxs-Heap-W,Qesagetnewbuf:Buffer) With Invalid Numeric Data [ID 1321682.1]

Applies to:

Oracle Server - Enterprise Edition - Version: 10.2.0.5 and later   [Release: 10.2 and later ]
Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 11.2.0.2   [Release: 10.2 to 11.2]
Information in this document applies to any platform.

Symptoms

- When using a 64-bit client,
- And when running a SELECT statement with a UNION, the following error occurs:

ORA-04030: out of process memory when trying to allocate 8176 bytes (kxs-heap-w,qesaGetNewBuf:buffer)


- However, when using a 32-bit client (i.e. on the 32-bit MS-Windows platform), and when issuing the same SELECT with a UNION, the following error occurs.

ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [___intel_new_memcpy+2248] [PC:0x293A158] [ADDR:0x8E04000] [UNABLE_TO_READ] []

Cause

This is due to bad data, where a numeric column has non-numeric data, and results in the ORA-7445 error: ORA-07445 [__INTEL_NEW_MEMCP].

This is due to unpublished bug 11878443,
Abstract:  - LNX: STAR: ORA-07445 [__INTEL_NEW_MEMCPY()+382] [SIGILL]

As per Bug 12428167 - ORA-4030 FOR (KXS-HEAP-W,QESAGETNEWBUF:BUFFER),
Oracle Development have determined that the ORA-4030 arises due to Bug 11878443.

The problem arises due to incorrect handling of an numeric value in a column, where that number is actually INVALID.  Once the fix is applied, the same query should report the error ORA-1722 (invalid number).

Solution

Unpublished Bug 11878443 is fixed in 11.2.0.3 and 12.1


Solutions:
1.  Identify the column with the bad numeric value and UPDATE that column by just multiplying the value by 1, for example: UPDATE TABLE_A SET COL_A = 1*COL_A;

OR

2.  Modify the SQL statement and replace UNION with UNION ALL

OR

3.  Request a One-Off Back-port for Bug 11878443

OR

4.  Upgrade to 11.2.0.3, where the fix for Bug 11878443 is already included.

Niciun comentariu:

Trimiteți un comentariu