Salesforce

LOB < 10 bytes cannot be fixed after re-creating the LOB

« Go Back

Information

 
TitleLOB < 10 bytes cannot be fixed after re-creating the LOB
URL Namelob-10-bytes-000076954
Article Number000177924
EnvironmentProduct: OpenEdge
Version: 10.1C, 10.2x, 11.x
OS: All supported platforms
Question/Problem Description
DBTOOL reports:
Warning - first record fragment of 503184 area 50 is only 9 bytes, [LOB 1 | LOB 2]
ERROR - attempt to repair record fragment of 503184 area 50 failed - no free space in block. 

These Warnings are still raised by DBTOOL after:
a.  Running DBTOOL Option 6, for those LOBS that could be fixed
b.  Using ABL code to set the lob = ? and re-instating the lob with buffer-copy
c.  Either ASCII or Binary dump, delete and load.
Steps to Reproduce
Clarifying Information
In the message if the number after "LOB" is 1 or 2, it indicates that the fragment is for LOB, otherwise it is a regular record (LOB 0).
Error MessageWarning - first record fragment of 503184 area 50 is only 9 bytes, LOB 1. 
ERROR - attempt to repair record fragment of 503184 area 50 failed - no free space in block. 
Defect NumberDefect PSC00353232
Enhancement Number
Cause
The LOBs that DBTOOL reports warning are mini direct LOBs (of data length 1 to 10 bytes) that don't have connecting record fragments. "Mini-Lobs" cannot be fixed either by DBTOOL, D&L or re-importing the LOB as unlike records, LOBs under 10 bytes (mini-lobs) are allowed. 
 
A direct mini-LOB record is one that does not have a next fragment. It is allowed because it does not need to save the additional space for next rowid.

In OpenEdge 101C, there was a change to handle updates to mini-LOB records by deleting and re-creating it when the containing block is full.




 
Resolution
The warnings raised for these direct mini LOBs are no longer legitimate since OpenEdge 10.1C and have been removed from DBTOOL in OpenEdge 11.7 

In OpenEdge 11.7, these Warnings will still be raised when:
  1. For mini-LOBS (LOB 1 or LOB 2) that do have next fragments as they will need enough space to store 64bit rowids.
  2. For normal records (LOB 0), where >= 10-byte is needed to reserve space for 64bit-dbkey.
DBTOOL Option 6 can fix these if there is enough space in the first block of the rowid to expand out the 10 bytes needed. When addressing this issue with a LOB field, run the utility must be run offline.

Otherwise DBTOOL cannot fix them and will report:
ERROR - attempt to repair record fragment of <recid> area <area> failed - no free space in block.
In which case a dump / load is required to re-create these records and avoid the problem with deletion outlined in the Article Reference below.
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:17 AM

Powered by