Procedure documentationFixing Errors in the Database Structure Locate this document in the navigation structure

Prerequisites

You have carried out a database structure check.

More information: Checking Database Structures

Procedure

  1. Display the Database Messages kernel log file.

    More information: Log Files

  2. Search for the keyword CHECK. The results of the database structure check and any errors are displayed after this keyword.

    Example Example

    Typical error message:

    2005-04-08 09:40:30 0x37C ERR 53019 CHECK Base error: bad_datapage

    2005-04-08 09:40:30 0x37C ERR 53019 CHECK Root pageNo: 104236

    End of the example.
  3. For each error, identify the number of the root page (ROOT) of the respective B* tree; or for SAP liveCache data, the root page of the respective page chain.

  4. Use the ROOTS system table, or for SAP liveCache data the CLASSCONTAINER_ROOTS system table, to deduct the affected base table or the affected index from the number of the root page.

    More information: System Tables

  5. If the error has affected an index, restore the damaged index.

    More information:

  6. If the error affects a base table, you have the following options:

    • Deleting the base table; afterwards you can try to reconstruct the base table from other tables.

    • Restoring the complete database. To do this, you use the backup that was created before the last successful database structure check.

      If you have not yet made a database structure check for the database, then perform another database structure check for the table that was damaged after you import the backup. If the database system finds errors again, then import an older backup.

      More information:

Example

A base table contains a damaged data page on the leaf level of the B* tree of the base table: Leaf number 44690 with block address 1/564.

During a database structure check, the database system notices that the checksum for the data page is incorrect. The database system writes the following information to the kernel log file:

  • Error in the checksum

  • Page number with data volume and block address information

  • Leaf number in the B* tree

  • Type of the database object represented by the B* tree

  • Root page of the B* tree

  • Error message

Then the database system internally marks the database object as BAD.

Excerpt from the Kernel Log File

2005-04-08 09:40:28 0xCEC ERR 4 Data Data_BasePage.cpp:124

2005-04-08 09:40:28 0xCEC ERR 4 Data 2005-04-08 09:40:28 Data Error 4

2005-04-08 09:40:28 0xCEC ERR 4 Data Checksum mismatch; calculated: 5468846 found: 22246062

2005-04-08 09:40:28 0xCEC ERR 25 IOMan IOMan_Volume.cpp:500

2005-04-08 09:40:28 0xCEC ERR 25 IOMan 2005-04-08 09:40:28 IOMan Error 25

2005-04-08 09:40:28 0xCEC ERR 25 IOMan Bad page on Data volume 1 blockno 564

2005-04-08 09:40:30 0xCEC ERR 36 IOMan IOMan_Manager.cpp:1007

2005-04-08 09:40:30 0xCEC ERR 36 IOMan 2005-04-08 09:40:30 IOMan Error 36

2005-04-08 09:40:30 0xCEC ERR 36 IOMan Bad data page 44690

2005-04-08 09:40:30 0xCEC ERR 18 Data vbd13.cpp:2426

2005-04-08 09:40:30 0xCEC ERR 18 Data 2005-04-08 09:40:30 Data Error 18

2005-04-08 09:40:30 0xCEC ERR 18 Data Bad data page 44690 of filetype 'Table' identified by root 104236

2005-04-08 09:40:30 0xCEC ERR 53021 B*TREE Bad File: 104236 (Root)

2005-04-08 09:40:30 0xCEC ERR 53000 B*TREE 0D000000000000000388000000000000

2005-04-08 09:40:30 0xCEC ERR 53000 B*TREE Table Root 104236

2005-04-08 09:40:30 0x37C ERR 53019 CHECK Base error: bad_datapage

2005-04-08 09:40:30 0x37C ERR 53019 CHECK Root pageNo: 104236