RDBPROD: Restoring and Recovering a Corrupted Oracle Rdb Database Page (Doc ID 260877.1)

Last updated on APRIL 13, 2017

Applies to:

Oracle Rdb Server on OpenVMS - Version 7.0 and later
HP OpenVMS VAX
HP OpenVMS Itanium
HP OpenVMS Alpha



Symptoms

Database page corruption can show itself in a variety of ways. The corruption could have been flagged as an error through an RMU Verify. It could be the reason for a failed attempt to back up a database, as Rdb will not allow you to back up a corrupted database. It could also be the result of an error, or a bugcheck, generated when trying to query data on a corrupted page of the database.

An example of the error reported by RMU/BACKUP:

%RMU-E-CORPAGPRES, Corrupt or inconsistent pages are present in area DISK$USR1:[SMITH]TEST.RDA;1
%RMU-F-FATALERR, fatal error on BACKUP
%RMU-F-FTL_BCK, Fatal error for BACKUP operation at 29-APR-1998 08:27:52.84

An example of the output from an RMU/VERIFY encountering a corrupt page is

%RMU-W-PAGCKSBAD, area EMPIDS_LOW, page 51 contains an invalid checksum
expected: C4533D73, found: 88CE0A4B

%RMU-W-PAGERRORS, 1 page error encountered
1 page header format error
0 page tail format errors
0 area bitmap format errors
0 area inventory format errors
0 line index format errors
0 segment format errors
0 space management page format errors
0 differences in space management of data pages

%RMU-E-CORRUPTPG, Page 51 in area EMPIDS_LOW is marked as corrupt.

where page 51 of the EMPIDS_LOW area is flagged as having an incorrect checksum stored. The checksum is a longword arithmetic sum of all longwords on the page. The calculated value is stored on the page when the page is written to the database disk. Each time a page is read from the database, the checksum value is re-calculated and compared with the value previously stored. If the calculated value is not the same as the value stored on the page, the page is considered corrupt which causes the RMU/VERIFY to return the CORRUPTPG error.

Another example of database corruption is where use of the database results in a bugcheck with the exception:

***** Exception at 013F6BA8 : PIO$FETCH_UPD + 00000EC8
%RDMS-F-CANTREADDBS, error reading pages 2:134087-134087
-RDMS-F-BADPAGRED, read requesting physical page 2:134087 returned page 2:23360

The RMU verify of the database and the "RMU/SHOW CORRUPT" of the database root both confirm the page as being corrupted.

In each of these you can check for pages entered in the Corrupt Page Table (CPT)  by entering:

$ RMU/DUMP/HEADER=CORRUPT/OUTPUT= dbtext.output database_root.rdb

Or you can also see the Corrupt Page Table (CPT) entries by issuing:

$ RMU/SHOW CORRUPT_PAGES database.rdb

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms