Three operator commands share the verb RECOVER and none of them is the RECOVER utility. On DB2 for z/OS, -RECOVER BSDS restores dual bootstrap data sets, -RECOVER INDOUBT completes a stuck two-phase commit, and -RECOVER POSTPONED finishes backout that restart postponed. This page explains each command, every identification option, and the messages you should expect.
The utility reads image copies and applies log to a table space or index. The operator commands repair control information (BSDS) or units of recovery (indoubt and postponed abort). You still use the utility when a page set is RECP after a failed backout. Keep the names straight on the bridge: “recover the tablespace” is DSNUTILB; “recover indoubt” is a hyphen command.
| Command | Abbreviation | Purpose |
|---|---|---|
| -RECOVER BSDS | -REC BSDS | Rebuild dual BSDS after one copy failed |
| -RECOVER INDOUBT | -REC IND | Manually commit or abort a UR stuck indoubt |
| -RECOVER POSTPONED | -REC POST | Finish backout for postponed-abort URs after restart |
Dual BSDS mode means two copies of the bootstrap data set, which records active and archive log inventory, checkpoint information, and related restart control data. If one copy hits a data set error, Db2 disables and deallocates that copy. You are then in single-BSDS mode until you repair it.
IBM’s documented steps:
Authorization: BSDS privilege, SYSCTRL, or SYSADM. Member scope. No extra keywords—the command is just RECOVER BSDS. If both copies are gone, this command cannot help; you restore BSDS from a backup (often with DSNJU003 / DSNJU004 and the Administration Guide procedure) and then restart.
1-RECOVER BSDS
A thread is indoubt when Db2 (as a participant) finished the prepare phase of two-phase commit and then lost contact with the commit coordinator before learning COMMIT or ROLLBACK. Automatic resolution usually reconnects and finishes. -RECOVER INDOUBT is for when automatic resolution will not work. The coordinator—not guesswork—must determine COMMIT or ABORT. Abbreviation -REC IND.
Authorization: RECOVER privilege, System DBADM, SYSOPR, SYSCTRL, or SYSADM. Member scope. If this thread is coordinator for downstream participants, the same decision is propagated to them.
| Option | Meaning |
|---|---|
| connection-name | One- to eight-character connection. Default is the connection you entered from; from a z/OS console you must supply it when using ID or NID. Ignored if LUWID is specified. |
| ID(correlation-id) | 1–12 character correlation ID of an allied thread (including distributed allied). |
| ID(*) | All indoubt threads for that connection name, even if correlation IDs collide. |
| NID(network-id) | IMS/CICS: net-node.number (3–25 characters). RRSAF: 32-character RRS URID. Use when correlation ID is not unique. |
| LUWID(luwid|token) | Full LUWID (network.luname.12-hex.4-hex commit seq) or a 1–6 digit token assigned by this member. |
For IMS and CICS, the network ID on the coordinator log is an 8-byte node name plus an 8-byte number. For RRSAF it is a 16-byte (32 hex character) RRS URID. You do not need NID if you specify LUWID. Do not use a correlation ID that belongs to more than one network ID—use NID instead. If the named thread is part of a global transaction, the command applies to all threads in that global transaction.
123-RECOVER INDOUBT ACTION(COMMIT) ID(*) -RECOVER INDOUBT ACTION(COMMIT) LUWID(1332) -RECOVER INDOUBT ACTION(ABORT) LUWID(DB2NET.LUNSITE0.A11A7D7B2057.0002,442)
After a CANCEL THREAD of distributed work, DSNL450I may tell you the thread became indoubt. That is the same family of problem: wait for automatic resync, or RECOVER INDOUBT once the coordinator’s decision is known. RESET INDOUBT only clears the DISPLAY report; it does not resolve the UR.
At restart, Db2 can postpone backout of some units of recovery (postponed abort) so the subsystem comes up faster while those objects remain in a restart-pending state. -RECOVER POSTPONED completes that backout when automatic resolution was not selected. Abbreviation -REC POST. Same RECOVER / System DBADM / SYSOPR / SYSCTRL / SYSADM authorization. Member scope.
12-RECOVER POSTPONED -RECOVER POSTPONED CANCEL
Output is informational messages only. Watch DSNI024I per page set so you know which objects left restart-pending. Do not confuse postponed abort (restart backout delayed) with indoubt (commit decision unknown). POSTPONED always rolls back unless you CANCEL the postponed work; INDOUBT requires an explicit COMMIT or ABORT.
The BSDS is the library’s two identical card catalogs. If one catalog burns, you photocopy the surviving catalog onto a new set of drawers (RECOVER BSDS). Indoubt is a checkout where the librarian and the branch manager lost the phone call about whether the book is sold or returned—you must ask the manager, then stamp COMMIT or ABORT. Postponed abort is “we opened the library before putting those messy returns back on the shelf”—RECOVER POSTPONED is the crew that finally reshelves them.
1. What does -RECOVER BSDS do?
2. When should you use -RECOVER INDOUBT?
3. What are postponed-abort units of recovery?
4. How do you identify an allied indoubt thread from the console?
5. RECOVER POSTPONED CANCEL leaves objects how?