Kbase 12895: Version 6.2 System Hang or MT / DB Holder died.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/31/1999 |
|
VERSION 6.2 System Hang or MT / DB Holder Died.
INTRODUCTION
This notebook entry describes issues in PROGRESS Release 6.2 that are
related to the micro-transaction (MT) and database (DB) holders. The
MT Holder is the individual who has exclusive access to the database
at that instant. The DB holder is the user who holds the DB
semaphore. Follow these steps to determine if your system hung
because of the MT and/or DB holder.
STEP BY STEP DETAILS
1> Determine what actions you took before the system hung.
2> To determine if all users are waiting on a specific user and/or
MT or DB holder locks. Enter promon -F <database_name>, then
choose option 1, User Control. (The -F option runs the PROMON
utility without locking shared memory.) The user control screen
displays the micro-transaction and database (DB) holders. A value
of -1 indicates that no one is the MT or DB holder. A positive
number that does not fluctuate for more than 30 seconds indicates
that that user is the MT or DB holder.
3> If you are waiting on the MT or DB user, contact that user and ask
them to finish what they are doing or disconnect the user from
the server. To disconnect the user, you can:
- Use the PROMON utility.
- Shut down the database.
- Use kill <pid> -2, 15, 8 or 9 , in that order, until you
successfully disconnect the user. See kBase entry 12968 for
more information on the UNIX kill command. To obtain the user's
pid type: ps -ef or ps -ax.)
If an error occurs while shared memory is being modified and the error
leaves the data structures in an unknown and possibly inconsistent
state, PROGRESS deliberately brings down the database to protect data
integrity. If a user who is the MT holder and/or DB holder is
disconnected, PROGRESS generates the following error messages.
nsamgr: DB holder died. (1167)
nsagmr: MT holder died. (1168)
The MT and DB holders die under any of the following situations:
- The user session is disconnected abnormally.
- The user unplugs or turns off their terminal.
- The user process is "killed".
- A remote session loses its connection.
If the User Control option screen of the PROMON utilty shows that a
user is the MT or DB holder and the user is no longer in PROGRESS,
shared memory might be locked.
In this case, follow these steps:
1> Kill the broker process with the following command:
kill <pid> -2, 15, 8 or 9, in that order, until you successfully
disconnect the user. (To obtain the
user's pid, type: ps -ef or ps -ax.)
2> Run one of the following utilities to determine the held
segment-id:
- proutil -C dbipcs (this lists the database name)
- ipcs -m (for shared memory)
- ipcs -s (for semaphores)
3> To release the held shared memory segments, use the segment-id
with the UNIX ipcrm utility: ipcrm -m <ID>.
For more information on the UNIX ipcrm utility, see the
Knowledgebase entry 3246.
4> Check to see if you can start a single-user PROGRESS session and
allow PROGRESS to perform crash recovery.
5> Once you are able to start a single user session, you should be all
set to start the server process.
REFERENCES TO WRITTEN DOCUMENTATION:
====================================
PROGRESS System Administration II guide Chapter 4,
"General Administration," section 4.6.6,
"Shared Memory Status (dbipcs option)"
Appendix B, "The Database Monitor".
Kb 3246 ipcs & ipcrm: Checking active message q's,memory, semaphores
Kb 12968 Guidelines to use of UNIX kill command to stop a process
Progress Software Technical Support Note # 12895