Nonstop Database, HiRDB Version 9 System Operation Guide

[Contents][Index][Back][Next]

20.14.2 Performing transaction determination manually on undetermined transactions

This section explains how to perform transaction determination manually on undetermined transactions.

Procedure
[Figure]

Notes
  • The numbers to the left of the process boxes correspond to the paragraph numbers of the explanations on the following pages. For example, step 5 is explained in paragraph (5) below.
  • Messages can be checked during the procedure explained below. To do so, reference the messages in syslogfile.
Organization of this subsection
(1) Check for KFPS00992-E messages
(2) Is the client product running?
(3) Start the client product
(4) Wait for approximately 1 minute
(5) Was the KFPS00992-E message output during HiRDB termination processing?
(6) Check TRNGID that is output in the KFPS00992-E messages
(7) Use the pdls command to check transaction status
(8) Are there any transactions in READY(p,?) or FORGETTING(?,w) status?
(9) Check the completion type of undetermined transactions
(10) Perform determination of the undetermined transactions
(11) Wait for transaction determination
(12) Check for transaction determination
(13) Have all transactions terminated?

(1) Check for KFPS00992-E messages

Search syslogfile for KFPS00992-E messages.

 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b4d, TRNBID=HRD1unt100020034, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b22, TRNBID=HRD1unt100020035, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b5a, TRNBID=HRD1unt100020036, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b5f, TRNBID=HRD1unt100020037, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b64, TRNBID=HRD1unt100020038, server=bes1, service=p_f_sqa_call
 

Explanation
The KFPS00992-E messages display transaction branches that could not be committed or rolled back. In this example, the transactions with the following transaction identifiers might be undetermined:
  • TRNGID=HRD1unt100020b4d
  • TRNGID=HRD1unt100020b22
  • TRNGID=HRD1unt100020b5a
  • TRNGID=HRD1unt100020b5f
  • TRNGID=HRD1unt100020b64

(2) Is the client product running?

Check whether the product used as the HiRDB client is running normally.

(3) Start the client product

If the product used as the HiRDB client is not running normally, start it using the procedure appropriate to the particular product.

Do not forcibly start the client product.

(4) Wait for approximately 1 minute

Wait for approximately 1 minute, because transaction automatic determination might be underway.

(5) Was the KFPS00992-E message output during HiRDB termination processing?

The action to be taken depends on whether the KFPS00992-E message was output during HiRDB termination processing.

(6) Check TRNGID that is output in the KFPS00992-E messages

If the KFPS00992-E message was output during HiRDB termination processing, the pdls -d trn command cannot be executed. Therefore, you must check the TRNGID that is output in each KFPS00992-E message.

(7) Use the pdls command to check transaction status

Use the pdls -d trn command to check the status of transactions.

pdls -d trn
 
HOSTNAME : host1(153415)
TRNGID           TRNBID           STATUS            PID    SVID    B-SVID
HRD1unt100020b4d HRD1unt100020034  READY(p,n)       0      bes1    fes1
HRD1unt100020b22 HRD1unt100020035  READY(p,n)       0      bes1    fes1
HRD1unt100020b5a HRD1unt100020036  READY(p,n)       0      bes1    fes1
HRD1unt100020b5f HRD1unt100020037  ROLLBACK(u,n)    29799  bes1    fes1
HRD1unt100020b69 HRD1unt100020039  FORGETTING(r,w)  0      bes1    fes1
 

Explanation
Check the information listed in the STATUS column.
  • The status of the three transactions listed below is READY(p,?).
    TRNGID=HRD1unt100020b4d
    TRNGID=HRD1unt100020b22
    TRNGID=HRD1unt100020b5a
  • Transaction TRNGID=HRD1unt100020b5f was rolled back by determination processing because a client product was started. This transaction will be determined automatically.
  • Transaction TRNGID=HRD1unt100020b64 was determined by determination processing because a client product was started. For this reason, this transaction is not listed in the execution results of the pdls -d trn command.
  • The status of transaction TRNGID=HRD1unt100020b69, which was not output in a KFPS00992-E message, is FORGETTING(?,w).

(8) Are there any transactions in READY(p,?) or FORGETTING(?,w) status?

If the execution results of the pdls -d trn command still show any transactions in READY(p,?) or FORGETTING(?,w) status (in the STATUS column), you must perform determination of those transactions.

If only transactions in statuses other than READY(p,?) or FORGETTING(?,w) remain, wait for those transactions to be determined automatically.

(9) Check the completion type of undetermined transactions

If there are any transactions in READY(p,?) or FORGETTING(?,w) status, search the KFPS00990-I messages in syslogfile for the TRNGIDs of the transactions to be determined. Each KFPS00990-I message shows the transaction's completion type. Search only the KFPS00990-I messages that have been output since the previous normal startup.

 
KFPS00990-I Transaction branch recovery complete. TRNGID=HRD1unt100020b5a,
TRNBID=HRD1unt200020015, server=fes1, service=p_f_sqa_cauxi, completion type=c, c
 
KFPS00990-I Transaction branch recovery complete. TRNGID=HRD1unt100020b4d,
TRNBID=HRD1unt200020014, server=fes1, service=p_f_sqa_cauxi, completion type=r, r
 

Explanation
The search results and the actions to be taken are explained below:
  • Completion type of transaction TRNGID=HRD1unt100020b5a
    Because completion type=c is shown, commit must be used to determine the transaction.
  • Completion type of transaction TRNGID=HRD1unt100020b4d
    Because completion type=r is shown, rollback must be used to determine the transaction.
Transactions that were not found in the search and the actions to be taken are explained below:
  • Completion type of transaction TRNGID=HRD1unt100020b22
    Because there is no KFPS00990-I message for this TRNGID, rollback must be used to determine the transaction.
  • Completion type of transaction
    TRNGID=HRD1unt100020b69
    Because the STATUS is FORGETTING(?,w), the transaction must be terminated forcibly.
You need not check the completion types of transactions identified by the following TRNGIDs:
  • TRNGID=HRD1unt100020b5f
  • TRNGID=HRD1unt100020b64

(10) Perform determination of the undetermined transactions

Use the following commands to perform determination of undetermined transactions:

Command name Function and application criteria
pdcmt Commits a transaction.
pdrbk Rolls back a transaction.
pdfgt Terminates a transaction forcibly. This command is executed for a transaction in FORGETTING(?,w) status.

(11) Wait for transaction determination

If the only remaining transactions are in statuses other than READY(p,?) or FORGETTING(?,w), these transactions are being determined. Therefore, wait for determination processing to be completed.

(12) Check for transaction determination

When the KFPS00992-E message was output during HiRDB termination processing, check whether the KFPS02183-I message has been output. When all undetermined transactions have been determined, the KFPS02183-I message is output within 30 seconds. If this message is not output within 30 seconds, an undetermined transaction remains.

If the KFPS00992-E message is output during HiRDB restart, or if the execution of the pdls -d trn command while HiRDB is running identifies an undetermined transaction, use the pdls -d trn command to check if the transaction has been determined.

(13) Have all transactions terminated?

If there is any transaction that has not terminated, return to step (5) in the procedure.