Kbase P56653: How to recover from a missing index extent
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  22/04/2008 |
|
Status: Verified
GOAL:
How to recover from a missing index.d
GOAL:
How to rebuild missing index extents
GOAL:
How to reconstruct a Progress Database with missing index storage areas extents
FACT(s) (Environment):
All Supported Operating Systems
FIX:
The following describes a methodology that can be employed to reconstruct missing index extents, by way of example:
SETUP:
$ mkdir 01 # this is where the database is going to be
$ mkdir 02 # this is where the dummy files are going to be ..
Make a copy of the sports2000 database:
$ cd 01
$ procopy $DLC/sports2000 dbname
Remove the Cust_index extents from the database:
$ rm dbname_10*
STEPS:
1.) Get a dbname.st file as understood by the dbname.db currently:
$ prostrct list dbname dbname.st
2.) Copy the dbname.st to the dummy directory and correct the file path:
$ cp dbname.st /02/dbname.st
$ cd 02
$ cat dbname.st | sed "sF01/F02/Fg" > pip.st
$ mv pip.st dbname.st
3.) Create a dummy void structure of the database, don?t forget to use the correct blocksize
$ prostrct create dbname dbname.st -blocksize
4.) Copy the missing extents back into the database directory
$ cp dbname_10* /01/dbname_10*
5.) There is no need to repair the structure, the dbname.db already expects the missing index extents to be there, correct the time-stamp differences on the new files:
$ cd 01
$ prostrct unlock dbname
6.) Truncate the bi file with the FORCE option. We need to do this because we cannot be sure of the pending updates in the Physical and Logical Redo phases of roll back recovery:
$ proutil dbname -C truncate bi -F -G 0
$ [answer yes "y" at the prompt]
7.) Run the unsupported dbrpr to scan the database. There may have been data entries that may need removing/ rolling back because they were incomplete when the database was shut down:
$ proutil dbname -C truncate bi -G 0
$ proutil dbname -C dbrpr
select: 1. Database Scan Menu
then: 1,3,4,5,A,G
DATABASE SCAN MENU
------------------
ON 1. Report Bad Blocks
2. Repair Block Alignment
ON 3. Reformat Bad Blocks
ON 4. Report Bad Records
ON 5. Delete Bad Records
6. Dump Records to RM File
7. Rebuild Free Chain (chain 0)
8. Rebuild RM Chain (chain 1)
9. Rebuild Index Delete Chain (chain 2)
ON A. Apply scan to all areas
G. GO
Scan Backward (Yes/No)? n
8.) Run a full index re-build. If your database larger than 2GB, then this utility will need to be run with a multi-volume sort file in versions prior OpenEdge 10.1B. Please refer to Solution P55740, "How to scope and define a multi-volume srt file for idxbuild" for further details
$ proutil dbname -C idxbuild ALL -TM 32 -TB 24 -B 1024
9.) Take a full backup:
$ probkup dbname /backup/dbname.bak00
$ prorest dbname /backup/dbname.bak00 -vf
10) proserve the database.