Fully recover MaxDB database following data corruption – Restauration complète d’une base MaxDB suite à une corruption de données

Fully recover MaxDB database following data corruption

I had to fully recover my MaxDB database due to a data corruption. Hopefully, I had a full backup dating from before the data corruption.

Here is how to recover a MaxDB database from a complete backup.

Suite à une corruption de ma base de donnée MaxDB, j’ai du effectuer une restauration complète. Heureusement, j’avais une sauvegarde complète récente datant de juste avant la corruption.

Voici comment restaurer une base de données MaxDB à partir d’une sauvegarde complète.

 

First connect to the database (start it if it’s not), and go to ADMIN mode.

ADMIN is a mode dedicated for administration tasks, the database first go OFFLINE and then in ADMIN operational state (kind of Oracle’s “startup restrict” mode).

En premier se connecter à la base de données (la démarrer si elle ne l’est pas déjà) et se mettre en mode ADMIN).

ADMIN est une mode dédié pour les taches d’administration, la base de données passe dans un premier temps OFFLINE, puis dans le mode opérationnel ADMIN (ressemble au mode “startup restrict” d’Oracle)

 

# cd /Database/MaxDB/Software/programs/bin

# ./dbmcli -d MDB -u DBADMIN,PASSWORD

./dbmcli on MDB>db_start

OK

./dbmcli on MDB>db_connect

OK

---

./dbmcli on MDB>db_admin

OK

---

Then list all backup mediums:

Ensuite lister les mediums de sauvegarde :

./dbmcli on MDB>medium_getall

OK

BACKMAXDB       /tmp/pipe       PIPE    DATA    0       8       NO      NO              20080520110904  20080520110904          BACK

BACKUP  /tmp/ADA.dat   UNKNOWN UNKNOWN 0       8       NO      NO              20080521093903  20080521095340          NONE

---

If you don’t have a medium that suit you, create it. I’m creating a medium named RESTORE referencing the backup file I want to use for the recover /tmp/maxdb.dat.

Si vous n’avez pas déjà de medium à votre convenance, créez-le. Dans l’exmple je créé un medium nommé RESTORE qui fait référence au fichier de sauvegarde que je veux utiliser pour la restauration /tmp/maxdb.dat.

./dbmcli on MDB>medium_put RESTORE /tmp/maxdb.dat

OK

 

Start the recover (specify DATA for we are restoring a complete data backup) :

Démarrer le recover (spécifier DATA car c’est une restauration à partir d’une sauvegarde complète) :

./dbmcli on MDB>recover_start RESTORE DATA

OK

Returncode              0

Date                    20080521

Time                    00161852

Server                  myserver1

Database                MDB

Kernel Version          Kernel    7.6.03   Build 015-123-173-107

Pages Transferred       2664

Pages Left              0

Volumes                 1

Medianame               BACKUP

Location                /tmp/maxdb.dat

Errortext

Label                   DAT_000000043

Is Consistent           true

First LOG Page          625

Last LOG Page

DB Stamp 1 Date         20080521

DB Stamp 1 Time         00095848

DB Stamp 2 Date

DB Stamp 2 Time

Page Count              2643

Devices Used            1

Database ID             myserver1:MDB_20080520_151928

Max Used Data Page      0

Converter Page Count    8

---

 

Wipe out the old logs:

Nettoyer les anciens logs :

./dbmcli on MDB>util_execute clear log

OK

---

And switch to ONLINE state:

Et se mettre en mode ONLINE :

. /dbmcli on MDB>db_online

OK

---

You can restart the database to make sur everything is allright.

Vous pouvez redémarrer la base pour être sur que tout fonctionne correctement.

 

If you have to recover some operations that occurred between the complete backup and the corruption, you will have to recover from the backup log.

Si vous voulez récupérer certaines opérations qui auraient eu lieu entre la sauvegarde complète et la corruption, il faudra procéder autrement en passant par une restauration à partir des sauvegardes de log.

 

How to check MaxDB’s log backup mode – Verifier le mode de sauvegarde des logs MaxDB

check MaxDB log mode

Automatic log backup ensure that a log segment of the log area is saved as soon as it has been filled.

This log segment is then available again to be overwritten. It ensures that overflows (logged operations exceeding log area size) in the log area are practically impossible.

If you are more used to Oracle, this mechanism can be compared to the ARCHIVELOG mode.

Le mode “sauvegarde automatique des logs” s’assure que les “segments de log” de la “zone de log” soient sauvegardés dès qu’ils sont plein.

Le segment est alors à nouveau disponible. Cela permet d’éviter les problèmes d’engorgement de la zone de log.

Si vous êtes plus familier avec Oracle, ce mécanisme peut être comparé avec le mode ARCHIVELOG.

 

Here is the check command:

Voici la commande  de vérification :

./dbmcli on ADA> autolog_show

 

If the result is : AUTOSAVE IS OFF, then you can activate autolog by setting the backup medium (it can be a tape medium or a file medium).

Si le résultat est : AUTOSAVE IS OFF, il faut alors active l’autolog en définissant un medium de sauvegarde (de type cartouche ou fichier).

 

./dbmcli on ADA>medium_put LOGBACKUP /save/MaxDB/MDB_autosavelog FILE AUTO

OK

I chose the file mode to save the log segments on disk. Each file will have the size of a log segment, and in my example, will be named MDB_autosavelog.XXX (XXX is a unique incremental number).

It’s the “AUTO” option that makes it an automatic log backup medium.

J’ai choisi le mode fichier pour sauvegarder les segments de log sur disque. Chaque fichier aura la taille d’un segment de log et dans mon exemple, sera nommé MDB_autosavelog.XXX (XXX est un numéro incrémental unique).

C’est l’option “AUTO” qui permet de spécifier que le medium sera utilisé pour la sauvegarde automatique des logs.

 

Then activate the automatic log backup and check the status again:

Ensuite il faut active le mode automatique et verifier à nouveau l’état du mode :

./dbmcli on ADA>autolog_on

OK

---

./dbmcli on ADA>autolog_show

OK

AUTOSAVE IS ON

---