Consultor Eletrônico



Kbase P4404: In a single-volume database, .db file has reached 2GB.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   3/20/2009
Status: Verified

SYMPTOM(s):

Error 6091 on .db file in single-volume database

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

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

The offset number in the 6091 message indicates the database is just short of the 2GB limit.

On a single-volume database, .db file reaches 2GB

Database has crashed just before hitting the 2GB limit

Trying to use prostrct convert returns:

Conversion of database <database-name> to a multi-volume database aborted. (5084)

SYSTEM ERROR: Unable to extend the database. (111)

FACT(s) (Environment):

Progress 8.x
All Supported Operating Systems

CAUSE:

The database is almost at the 2GB limit, extending the database any further to make room for more data would extend the .db file over the 2GB limit. The writes to the .db file that the prostcrt convert utility has to make to update the database schema would also require additional space which is no longer possible.

FIX:

There are several ways this situation may be resolved. Note that none of these techniques will help if the database has crashed due to the bi reaching the 2GB limit, nor if the 2GB limit is blown when the bi tries to go through crash recovery.

If you don't have enough disk space for two copies of the database;
Option A:
1. Restart the database in single-user mode - it will go through crash recovery:
$ pro dbname
2. Backup and verify the database backup:
$ probkup dbname dbname.bak00
$ prorest dbname dbname.bak00 -vf
3. Write a new .st file, defining your multi-volume db.
Please refer to Progress Administration Guide and reference.
4. Delete all the existing database files.
5. Use prostrct create with this new st file to create a void multi-volume database.
$ prostrct create dbname dbnewmv.st
6. prorest the backup, using the void multi-volume database.
$ prorest dbname dbname.bak00

If you do have enough disk space for two copies of the database;
Option B.
1. Restart the database in single-user mode - it will go through crash recovery.
$ pro dbname
2. Write a new st file, defining your multi-volume db in a different directory structure to the existing single-volume database.
Please refer to Progress Administration Guide and reference.
3. Use prostrct create with this new st file to create a void multi-volume database.
$ prostrct create dbname dbnewmv.st
4. Use procopy to copy the single-volume databse into the void multi-volume structure.
$ procopy <dir>dbname <dir>dbname
5. Delete the single-volume database

If you don't want Progress to go through crash recovery before converting the database to a multi-volume;
Option C.
1. Use probkup with the -norecover option to backup the database which means that the bi file will be backed up as well.
$ probkup dbname dbname.bak00 -norecover
2. Write a new st file, defining your multi-volume database.
Please refer to Progress Administration Guide and reference.
3. Use prostrct create with this new st file to create a void multi-volume database.
$ prostrct create dbname dbnewmv.st
4. prorest the backup, using the new st file.
$ prorest dbname dbname.bak00
5. Delete the single-volume database

Example of Progress 8 multi-volume .st file refered in Options above:

d /tmp/dbdir f 2000000
d /tmp/dbdir f 2000000
d /tmp/dbdir
b /tmp/dbdir