Salesforce

How to rebuild the RM Chain and Free Chain of a Progress Database

« Go Back

Information

 
TitleHow to rebuild the RM Chain and Free Chain of a Progress Database
URL NameP14857
Article Number000135028
EnvironmentProduct: Progress
Version: 8.x, 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Other: DBRPR
Question/Problem Description
How to rebuild the RM Chain and Free Chain of a Progress Database
How to use dbrpr to rebuild the RM Chain and Free Chain
Steps to Reproduce
Clarifying Information
Error MessageRM block found not on RM chain, but flagged RM chain. (3914)
<name> Block <dbkey> with invalid chain type <number> on RM chain (6704)
<name> Block <number> with invalid chain type <number> on RM chain (6704)
<name> Block <number> with invalid chain type <number> on RM chain (14151)
RM block found that should be in the RM free chain. (2802)
RM chain count inconsistancy. (3902)
The RM chain is a circular list. (3895)
The actual number of RM blocks = (3904)
The master block indicates <num> RM chain blocks. (3903)
[Warning] Free chain count inconsistency. (3888)
[Warning] RM chain count inconsistency. (3902)
Defect Number
Enhancement Number
Cause
Resolution
The RM Chain and Free Chain are kept in sync by the database engine. There are times when running a PROUTIL command with the DBANALYS (TABANALYS, IDXANALYS, CHANALYS) Options that Warning messages will be reported relating to these Chains. 

In the event of receiving these warnings, you may elect to manually rebuild the RM and Free Chain, however this should not be essential as these chains should get re-synched by the database engine during normal operations.

Bear in mind that if the database is enabled for After-Imaging, it will first need to be disabled before being able to run DBRPR. If DBRPR is run with the -F Option to skip crash recovery, AI will still be disabled as a consequence, but associated features like AIMGT will remain enabled.

To Rebuild the Chains:

1. Shutdown the database:  
$    proshut dbname -bn
 
2. Truncate the bi file and disable After-Imaging if enabled, which disables AI Management and Replication if either is active.
$   proutil dbname -C truncate bi -G 0
$   rfutil dbname -C aimage end

 
3. Ensure there is a valid backup before proceeding

4. Use the non-documented OpenEdge backend tool: DBRPR 

Please note that this tool must be used with extreme caution.  Any utilities of this tool undertaken in error may lead to an irrecoverable situation, in which case a backup will be needed.   If in doubt, contact the Progress Technical Support Region. 
 
$   proutil dbname -C dbrpr

Menus displayed in this Article entry are for OpenEdge 11.6. Other versions may have different Menu Options.
     
     DATABASE REPAIR MENU
     ------------------------------------

 1. Database Scan Menu
 2. Test One or More Indexes
 3. Remove Bad Record Fragment
 4. Dump Block
 5. Load Block
 6. Copy Bytes Between Files
 7. Load RM Dump File
 8. Reformat Block to a Free Block
 9. Change Current Working Area
10. Display the Free Chain
11. Display the RM Chain
12. Display the Index Delete Chain
13. Display Block Contents
14. Display Record Contents
15. Display Cluster Chain (Type II Area)
16. Scan/Fix block checksum (Type II Area)
 A. Try to read additional Index/Table info
 P. Print Info Menu
 Q. Quit

5. Select Option 1. Database Scan Menu
             
 DATABASE SCAN MENU
     ---------------------------------

 1. Report Bad Blocks
 3. Fix Bad Blocks
 4. Report Bad Records
 5. Delete Bad Records
 6. Dump Records to RM File
 7. Rebuild Free Chain
 8. Rebuild RM Chain

 9. Rebuild Index Delete Chain
10. Change Current Working Area
11. Fix Cluster Chains in Type II Area
 A. Apply scan to all areas
 G. Go
 Q. Return to Main Menu
(Current Working Area: Schema Area)
Choice:

6. The Database Scan Menu is a toggle choice selection. As menu item numbers are selected an ON statement appears on the left-hand side of the Option selected.

Select Options:
 
ON       7. Rebuild Free Chain
ON       8. Rebuild RM Chain
ON       A. Apply scan to all areas
 
In other words: Enter 7 and <press return>, then 8 <press return> and then A <press return> . 

NOTE: If only a specific Area's Chains need rebuilding, instead of using "A. Apply scan to all areas",
Select "10. Change Current Working Area".
A new menu "SELECT CURRENT WORKING AREA:" is presented.
Enter the number listed for required area in the area list presented and the DATABASE SCAN MENU will be presented again confirming : (Current Working Area: [Area Name])

To execute the selected DATABASE SCAN MENU Options, enter: G for GO.

7. Answer No and press return at the following prompt:
 
Scan Backward (Yes/No)?

When the scan and necessary chain build completes, it will return to the Main Database Repair Menu

Enter Q to quit DBRPR

The RM and Free Chains have now been rebuilt.

To run on production environments, the required Menu key entries can be saved to a text file (dbrpr.in) and provided as input:

Example: $   proutil dbname -C dbrpr < dbrpr.in > dbrpr.out

Where 'dbrpr.in' is as follows with a carriage return at after the "Q":
1
7
8
A
G
N
Q

For Type II Storage Areas, Option 11. Fix Cluster Chains in Type II Area

 
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:33 AM

Powered by