Consultor Eletrônico



Kbase 19074: Errors 6447 & 73 occur when total record size in buffer has reached 32K
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/25/2005
Status: Verified

FACT(s) (Environment):

Oracle DataServer

SYMPTOM(s):

ORACLE row may exceed 32k - can't allocate buffer for table <table name>(328) (6447)

SYSTEM ERROR: bfcr called with no template. (73)

Errors can occur when loading .d into ORACLE

Errors can occur when loading/creating data into ORACLE

Error can occur when running Pro-to-ORA with load data option

CAUSE:

This error occurs when the total size of the record in buffer had exceeded 32K.

In Progress, a field of x(2000) does not actually allocate 2000 bytes of space. Space is allocated on an as-needed basis when data is actually entered. So, a field of 2000 may never really need to have 2000 bytes allocated.

However when working with ORACLE DataServer, the DataServer will actually allocate the space for the ORACLE record based on the sizes of the fields. This allocation can cause errors if the size of the record adds up to > 32K.

Contributing factor to this error(s)
If you're running Pro-to-ORA

1. You may have many fields

2. The database size is extremely large

3. Fields have many extents. Remember if a column in Progress has 200 extents, then a separate field for each extent is created in ORACLE. For example, 1 column that has x(75) with 200 extents is now really 75 X 200 = 15000 (15K).

3. If you've selected SQL-WIDTH during the migration, the table definitions into ORACLE is now doubled. With SQL-WIDTH, this same column is now, 150 X 200=30000 (30K). When the .d file is loaded into a database that is already very large, the load fails with these errors because the buffer size has overflowed over 32K. Thus, the entire record size in buffer is too large and is hitting the 32K.

If you have an ORACLE db

1. You may have many fields
2. The database size is extremely large
3. The record size being inserted is very large.


FIX:

If you're migrating a Progress db to Oracle, before migration re-evaluate the Progress database field sizes. Review field sizes and make them smaller, if possible.
For example, the size x(2000) for a field may not be needed, therefore setting field to x(100) is more reasonable.
It is not unusual to make the Progress field size larger than is really necessary since the space is allocated only on an as-needed basis.

If you have an Oracle db, create a view in the Progress application to hold less fields/columns so that you will not surpass the 32K.