Consultor Eletrônico



Kbase P45402: Cannot go through crash recovery initially after error 43 with errno 32
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   9/23/2010
Status: Verified

SYMPTOM(s):

Cannot go through crash recovery on the first attempt, have to take multiple startup attempts in order to complete crash recovery without errors.

SYSTEM ERROR: <function>: Bad file descriptor was used during <system call>, fd <file descriptor>, len <bytes>, offset <bytes>, file <file-name>. (9446)

SYSTEM ERROR: bkioWrite: Bad file descriptor was used during write, fd 624, len 8192, offset 18580, file dbname.b1. (9446)

BROKER 0: bkwrite: write to disk failed errno 9. (3645)

BROKER 0: SYSTEM ERROR: Releasing regular latch. latchId: 1 (5028)

BROKER 0: User 0 died holding 1 shared memory locks. (2522)

BROKER 0: Begin ABNORMAL shutdown code 2 (2249)

BROKER : Multi-user session end. (334)

**Cannot find or open file <filename>, errno = <number>. (43)

Cannot find or open file <filename>, errno = 32. (43)

Errors occur when truncating the bi file or accessing the database after a database crash.

FACT(s) (Environment):

errno 32 is an Operating System error which means:

32L ERROR_SHARING_VIOLATION The process cannot access the file because it is being used by another process.
Veritas running but not against database file locations
Windows NT 32 Intel/Windows 2000
All Supported Operating Systems
Cannot reboot the server to clean up shared memory.

CAUSE:

During write to the bi file, error 9: "The storage control block address is invalid."

FIX:

If you cannot reboot the server machine, then you can remove the shmid (Shared Memory ID) from the database so that we attempt to bind to a different shared memory id.

This can be done, by:

1. prostrct list dbname (to update dbname.st file)
2. prostrct repair dbname (which will reset the shmid in the masterblock)
3. proutil dbname -C truncate bi (to reset the shmid in the bi file).

Note: If you truncated the bi file, then you may want to use proutil dbname -C bigrow so that you do not experience any performance issues on startup of the database.