Cas de recovery en 12c

Savez-vous immédiatement quoi faire en cas de perte d’un fichier de la base de donnée (datafile, controlfile, redolog,…) ? Et éviter d’en restaurer plus que nécessaire ?

La 11g a introduit le Recovery Advisor qui peut:

  1. list failure: montrer les problèmes
  2. advise failure: donner les options de réparation, manuelles et/ou automatiques
  3. repair failure: exécuter les réparations automatiques

Dans quelques blogs suivants, je vais montrer des exemples sur des pannes classiques:
perte d’un datafile, user ou système, perte d’un ou de tous les controlfiles ou redo logs

Et montrer la réparation la plus rapide avec Recovery Advisor

Bien sûr c’et une bonne idée de s’entraîner. Et c’est facile sur une machine de test (qui peut être une machine virtuelle). Voici comment j’ai créé une base de test pour les exemples suivants:

Afin d’isoler mon test, j’utilise un ORACLE_BASE spécifique (/u/DEMO) et je met tout dessous.
Voici mon environnement:

ORACLE_BASE=/u/DEMO
TNS_ADMIN=/u/DEMO/network
ORACLE_SID=DEMO100

Création de la base avec DBCA

mkdir -p /u/DEMO/DATA/DEMO100 /u/DEMO/FRA /du/DEMO/backup
$ORACLE_HOME/bin/dbca -createDatabase -templateName General_Purpose.dbc -gdbName DEMO100 -sid DEMO100 -sysPassword oracle -systemPassword oracle -datafileDestination /u/DEMO/DATA -recoveryAreaDestination /u/DEMO/FRA -storageType FS -characterSet AL32UTF8 -listeners LISTENER -sampleSchema  true -totalMemory 400 -databaseType MULTIPURPOSE -silent

Mise en archivelog, mirroring des redo logs,…

startup mount force;
alter database archivelog;
alter database add supplemental log data;
alter database add logfile member '/u/DEMO/DATA/DEMO100/redo01bis.log' to group 1;
alter database add logfile member '/u/DEMO/DATA/DEMO100/redo02bis.log' to group 2;
alter database add logfile member '/u/DEMO/DATA/DEMO100/redo03bis.log' to group 3;
alter database open;

Configuration RMAN (je met les backups dans un autre répertoire que la FRA – sauf le controlfile autobackup qui est dans la FRA) et premier backup:

configure controlfile autobackup on;
configure channel device type disk format '/u/DEMO/backup/%U';
configure backup optimization on;
configure compression algorithm 'high';
backup database plus archivelog;

Pour commencer, des cas simples.
Dans les posts suivants nous verrons:

  1. perte d’un datafile de USERS
  2. perte d’un datafile SYSAUX
  3. perte d’un datafile SYSTEM
  4. perte d’un redo log member
  5. perte de tous les redo log member
  6. perte d’un controlfile
  7. perte de tous les controlfiles
  8. perte du spfile

Toutes questions et remarques (comportements différents sur d’autres version par exemple) sont les bienvenues dans les commentaires.

Déplacer des archivelog avec RMAN

Par manque de place dans un filesystem, on peut être amené à déplacer des archive logs.
Si on les déplace avec l’OS (mv) alors Oracle ne saura plus où ils sont. Il faudra utiliser RMAN pour supprimer les anciens (crosscheck archivelog all ; delete expired archivelog all; catalog start with ‘…’ ; )

Mais il y a plus rapide: BACKUP AS COPY fait une copie des fichiers et avec DELETE INPUT on supprime la source. Ce qui revient à les déplacer…

Exemple:

Lire la suite