Symptom

03-Apr-2020: changed to *** Hot News *** as data corruption has been reported.
Please see section Solution (Update as of April 3rd, 2020: *** Hot News ***)

 

Tables with OLTP compression active and getting frequent high load by inserts and later deletes of records showing an unexpected growth in Oracle 12.2.0.1 and 18c.

 

Affected tables seen so far can be:

MDTB, RESB

These tables do not own any securefile LOB.

Other Terms

OLTP compression, Array Inserts, growing, MDTB, RESB, space, corruption, ORA-07445 [kdblcgenblock2()+2763] , ORA-00600 [kdBlkCheckError] , kdblcgenblock2

Reason and Prerequisites

Oracle 12.2.0.1 or 18c is installed.
A new feature introduced in Oracle 12.2.0.1 implements array inserts for oltp rows.
At SAP array inserts are often used at mass inserts.

 

This new code requires empty blocks to be presented by the SPACE layer to the oltp-inserting code. Existing blocks are therefore not considered for the array inserts, leading to extra space usage in a session which is just doing oltp inserts and deletes.

Solution

To ged rid of the need for empy blocks for oltp array inserts, apply one of the following SAP Bundle Patches (SBP)

 

UNIX 12201x_date ( date >= 202002 )
UNIX 18.y.0.0.x_date ( y >= 9 and date >= 202002 )

 

As of SBP 202002, the fix for Oracle bug

 

28332319 DML + QUERY RESULTS IN ORA-07445[KDBLCGENBLOCK2()+2768]

 

is included. Bug 28332319 is already fixed in 19c.

 

Update as of April 3rd, 2020: *** Hot News ***

 

With 12.2 SBP 202002 or 18c SBP 202002 applied, which both include the fix for bug 28332319, data corruption has been reported and an
ORA-07445 [kdblcgenblock2()+2763]
ORA-00600 [kdBlkCheckError]

 

To avoid the corruption and the ORA-07445 [kdblcgenblock2()+2763] , deactivate the array inserts on oltp compressed rows by setting parameter:
_oltp_compress_dbg=1

 

SAP Note 2787869 Alternative Analyze (AlAn)
can be used to check for corruptions.

 

Uncompress queuing tables

When frequent inserts are done which are deleted again after a short time, oltp array insert feature can impact growing of table due to inserts always will use new blocks.
Reusing already allocated partly free blocks is not possible.
Tables used for queuing should be never been OLTP compressed rather configured for ADO.
In case affected table is compressed, please uncompress it by reorganization.

 

Use ADO

For tables storing the data for a longer time, recommendation is to use ADO feature to have an archive compressing.
It does not make sense to have Advanced compression and ADO activated at same time on such a table.

 

Optional: Deactivate the feature

In case tables has to be OLTP compressed nevertheless the disadvantage of CPU overhead then the feature can be deactivated if unexpected high growing is visible. To deactivate the new array inserts on oltp compressed rows set parameter:

_oltp_compress_dbg=1

 

Recommendation

SAP recommendation for database Oracle 12.2.0.1 and 18c: have OLTP array inserts be activated and usage of ADO for high frequent inserted and deleted table rows.

 

More details about ADO feature:

2254866 – Using Oracle Database 12c Automatic Data Optimization with SAP NetWeaver
2441683 – FAQ: Oracle ADO/ILM