Consultor Eletrônico



Kbase P56700: Recovering from 2GB Progress limit on extents
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   09/04/2009
Status: Verified

SYMPTOM(s):

Database extent exceeds 2GB limit

Unable to extend data files enough to proceed. (6743)

bkxtn: write error, file <file-name> errno: <number>. (3646)

bkioWrite: lseek error <error number> on file <file> at <address>, file <file-name>. (6081)

SYSTEM ERROR: File <file-name> too small <length>, blocksize <blocksize> extend failed." (4524)

<function>:Insufficient disk space during <system call>, fd <file descriptor>, len <bytes>, offset <bytes>, file <file-name>. (6091)

bkset: Extent file-name is below size file-size. (647)

SYSTEM ERROR: Attempted to exceed maximum size on file <pname>. (9452)

offset in 6091 message is between 2147352576 and 2147483648 bytes for a database with 8 KB blocksize

bi file hit the 2GB limit

File system does not support Large Files

FACT(s) (Environment):

All Supported Operating Systems
Progress 8.x
Progress 9.x
OpenEdge Database Category: Maintenance

CAUSE:

File size is near or over the Progress internal 2 GB limit and could not be written to.

FIX:

STEPS:

0.) O/S backup all the database files

1.) Make a new database structure file dbname2.st, to add a new variable extent, ensure that there is enough space available in the directory in which it is defined:

#dbname2.st
d "<Area_name>" .

2a) Add the new variable extent to expand database into:

$ prostrct add <database name> dbname2.st
(see Note*** if the prostrct add fails)

2b) Check that the extent has been added:
$ prostrct list <database name> dbname3.st

** NOTE: The extent referenced in the error message initially, has now become a FIXED extent, the size that it is fixed to depends on the initial physical size of that blown extent, which gets rounded up. **


3.) Truncate the bi

$ proutil <database name> -C truncate bi -G 0

4.) Single user connect to database

5.) Backup the database

If the new bi file structure size is not desirable the bi file structure may be modified by doing the following two steps.

6.) prostrct remove ( run this once for each bi extent, to remove all bi file structure )

7.) prostrct add dbname bi .st ( the bi.st file contains the structure desired for pathing, number and size of the bi files)

8.) Backup the database

To prevent the bi files from growing out of control again -bihold and -bistall should be implemented. For additional information reference:
P3771: "How can the -bithold -bistall and the proquiet bithreshold be implemented?"

***NOTE: In some conditions the prostrct add will fail. It may be necessary to force the extent which is at the 2 gigabyte limit to believe it is just under 2 gigabyte.
If this is necessary use the following steps and return to step 2a above:
1) prostrct list <database name> tempfile.st
2) Windows:
dir <database name>*.* look for the actual file size of the extent that has hit two gigabyte.
Unix:
ls -al <database name>*.* look for the actual file size of the extent that has hit two gigabyte.
3) review the database log file to see what the database blocksize is.
4) modify the tempfile.st from step 1.
Find the extent reference which has hit 2 gigabyte
If the database blocksize is 1k then the entry must be modified for that extent to add the following to the line:
f 2097136

Example of line before modification:
d c:\progress\wrk\sports2000.d10
Example of line after modification:
d c:\progress\wrk\sports2000.d10 f 2097136

If the blocksize of the database were 2048 then the fixed value would need to be set to 2097120, etc.

5) save the .st file
6) perform a prostrct repair of the database
prostrct repair <database name> tempfile.st
7) return to step 2a