BEGIN BACKUP

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Sauvegarde à chaud (méthode utilisateur, hors RMAN)
Commandes ALTER DATABASE/TABLESPACE BEGIN BACKUP
Pré-requis Base en mode ARCHIVELOG
Voir aussi RMAN · Flashback (RMAN)

BEGIN BACKUP place une base Oracle (ou un tablespace) en mode de sauvegarde à chaud (hot backup), pour permettre une copie des fichiers de données pendant que la base reste ouverte et accessible aux utilisateurs. C'est la méthode de sauvegarde physique manuelle historique, antérieure à RMAN — qui gère aujourd'hui ce mécanisme de façon transparente et est recommandé pour tout nouveau projet. BEGIN BACKUP reste pertinent quand la copie des fichiers est pilotée par un outil externe à Oracle (snapshot de baie de stockage, cp/rsync scripté, sauvegarde niveau hyperviseur...).

Fonctionnement

  • Changement de mode : Oracle signale aux fichiers de données qu'une sauvegarde va commencer ; cela ne bloque ni les transactions ni les modifications en cours.
  • Gel des en-têtes des datafiles : le SCN (System Change Number, identifiant de version interne) inscrit dans l'en-tête de chaque fichier de données n'est plus mis à jour pendant la durée de la sauvegarde, ce qui garantit un point de référence cohérent pour la restauration.
  • Journalisation renforcée : les blocs modifiés continuent d'être écrits normalement dans les fichiers de données, mais l'intégralité du contenu du bloc (pas seulement les octets modifiés) est en plus consignée dans les redo logs, afin de pouvoir reconstruire une image cohérente lors de la restauration.

Mise en œuvre

Base entière :

ALTER DATABASE BEGIN BACKUP;
-- copie des fichiers de données ici
ALTER DATABASE END BACKUP;

Par tablespace (permet de limiter la fenêtre de sauvegarde à chaud à un sous-ensemble de la base) :

ALTER TABLESPACE nom_tablespace BEGIN BACKUP;
-- copie des fichiers du tablespace ici
ALTER TABLESPACE nom_tablespace END BACKUP;

Vérifications

-- vérifier que la base est en mode ARCHIVELOG (indispensable pour un hot backup)
SELECT log_mode FROM v$database;   -- doit retourner ARCHIVELOG

ALTER DATABASE BEGIN BACKUP;
-- copie des fichiers, par exemple sous Linux :
-- cp /oracle/data/*.dbf /backup/
ALTER DATABASE END BACKUP;

Avertissement : laisser une base ou un tablespace en mode backup plus longtemps que nécessaire (script en échec sans END BACKUP, par exemple) fait grimper fortement le volume de redo généré, puisque chaque bloc modifié continue d'être journalisé intégralement tant que le mode n'est pas levé. Toujours s'assurer qu'un END BACKUP est exécuté même en cas d'échec de la copie (bloc try/finally ou équivalent dans le script de sauvegarde).

Voir aussi

  • RMAN — méthode moderne recommandée, gère ce mécanisme automatiquement
  • Flashback (RMAN) — retour arrière au niveau ligne, table ou base