Consultor Eletrônico



Kbase P20247: Data Extent Exceeds 2GB Limit-Without Large File Support - Procopy to a New Structure
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/15/2005
Status: Verified

FACT(s) (Environment):

Progress 8.x
Progress 9.x
OpenEdge 10.x

SYMPTOM(s):

Data Extent exceeds 2GB limit

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

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

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

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

File offset in error 6091 is 2147467264 close to the 2GB value

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

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

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

File system does not support Large Files

File system has sufficient disk space for multiple copies of the database

The database can be re-started

CAUSE:

The data file size is near the Progress internal 2GB limit and could not be extended to be written to.

FIX:

If it is possible to access the database in single user mode using the command "pro db-name", it will be possible to procopy the database into a new void structure with additional extents added. This is significantly faster than a dump and load. The steps to follow are given below:

1. Make a backup of the database. It is likely that only an OS backup will work.
2. Run the command pro db-name. If this gets you into the procedure editor, then close the procedure editor and continue to the next steps. If it fails, try the method detailed in Progress Solution P56700, "Recovering from 2GB Progress limit on extents"

3. Create a new void db in a different location using

$ prostrct create db-name db-name.st

Sufficient extents should be added in the structure file of this new database to allow for database expansion. To create a database with a structure description file, please refer to the Database Administration Guide and Reference, Creating a Database With PROSTRCT CREATE.

4. Procopy the old database to the new structure

$ procopy old-db new-db

It is possible that the procopy can fail at some point. In this case a dump and load into a new structure would need to be done instead. As mentioned before, this will take considerably more time than a procopy would. For more information on dumping and loading a database, please see the Progress Database Administration Guide and Reference, Dumping and Loading.
5. Now copy this newly created database back to the original location using an OS copy. Edit the structure file to reflect the new file locations and run prostrct repair

$ prostrct repair db-name revised.st

The database can now be started in multi-user mode.