20.12.10

SAP Note 15048 - INF604, INF164 SQL Error: Cannot read blob

Symptom:

The following error message appears:
-604 Cannot read blob.
-164 ISAM err: Blob stamp is incorrect.

Other terms

INF604, INF164, CR_LOCKBLOB, update termination PTS, PTS_BUG, PTS_BUG_163685

Reason and Prerequisites

BLOB (Binary Large Objects) data (for example, of data type BYTE) is not saved directly in a data page in the online DB system but is instead managed in separate BLOB pages, using what are known as "BLOB descriptors." That is, the BLOB segments are saved in separate BLOB pages. The data pages only contain references (pointers) to the BLOB pages.
Due to timing conflicts, in rare cases a session might read invalid BLOB segments for a BLOB descriptor, as these segments were meanwhile deleted and recreated by a different session. In this case, the error mentioned above occurs during the read transaction, because the BLOB timestamps that are compared do not agree.
The error can also occur if there is a genuine corruption on the BLOB in the table.

Solution
Start the terminated R/3 transaction again.
Since reading is attempted again when the INF604 error has occurred, the problem should arise only seldom.

The additionally recommended method of setting the CR_LOCKBLOB environment variable to further reduce the occurrences of the problem should only be used if your informix version contains the fix for PTS defect 16 3685, since otherwise, update terminations may occur.
This defect is removed in IDS Version 9.40.FC5 and higher.
CR_LOCKBLOB only has effect on read sessions that use the 'COMMITTED READ' isolation level. If CR_LOCKBLOB is set to prevent error -604 in a transaction, you may also need to change the code of the transaction so that this isolation level is used at problematic points.


A true BLOB corruption can be recognized in the online log or by executing "oncheck -cD :".

No comments:

Post a Comment