Voir le flux RSS

Blog de CinéPhil

Sauvegarde à chaud d'une base Oracle avec RMAN

Noter ce billet
par , 30/09/2019 à 09h46 (251 Affichages)
RMAN (Recovery MANager) est un utilitaire standard de la base de données Oracle. Il permet aux DBA de gérer les opérations de sauvegarde/restauration de manière souple et optimisée.

Je présente ici le script de sauvegarde à chaud que j'ai mis en oeuvre pour les bases de données Oracle que j'administre.
Merci à Farouk Mansouri, de Capdata, qui m'a donné l'essentiel du script que j'ai ensuite adapté.

Ce script fonctionne sur un serveur Oraclelinux et avec Oracle Database V12. J'ai ajouté les commentaires explicatifs en fin des lignes de commande.

Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
export ORACLE_SID=la_BDD # <== mettre ici le nom de la BDD à sauvegarder
# Variante s'il y a plusieurs bases sur le serveur
# export ORACLE_SID=$1 # Le script est alors lancé avec le nom de la BDD à sauvegarder en paramètre : ./backup_full.sh la_bdd_a_sauvegarder
 
export BACKUP_DIR=/backup/oracle/$ORACLE_SID/rman # <== adapter ici le chemin de stockage des sauvegardes
export BACKUP_LOGS_DIR=/backup/oracle/$ORACLE_SID/rman/logs # <== adapter ici le chemin de stockage des logs
export BACKUP_DAY=$(date +"%Y-%m-%d_%H-%M") # Date complète de la sauvegarde
export NLS_DATE_FORMAT="DD/MM/YYYY HH24:MI" # Format de la date
 
BOX=`uname -a | awk '{print$2}'` # Extraction du nom du serveur
MAILX='/usr/bin/mailx' # Emplacement de la commande d'envoi du message de succès ou échec de la sauvegarde
DESTINATAIRE='dba@masociete.com' # <== adapter ici l'adrel à laquelle vous voulez envoyer le message de résultat de la sauvegarde
FROM='oracle@masociete.com' # <== adapter ici l'adrel de l'expéditeur du message de résultat de la sauvegarde
SMTP='smtp.masociete.com:25' # <== adapter ici le serveur SMTP utilisé pour envoyer le message
 
date # Date et heure de lancement de la sauvegarde
 
# Connexion à RMAN et indication à RMAN du fichier d'enregistrement des logs
$ORACLE_HOME/bin/rman target / NOCATALOG log=$BACKUP_LOGS_DIR/backup_full_db_${BACKUP_DAY}.log <<EOF
 
# Paramétrage de RMAN
SET ECHO ON
 
CONFIGURE RETENTION POLICY TO REDUNDANCY 2; # On conserve 2 sauvegardes
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # On enregistre sur le disque
CONFIGURE CONTROLFILE AUTOBACKUP ON; # On sauvegarde automatiquement le fichier de contrôle de la bdd
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKUP_DIR/cf_%F'; # Format du nom de fichier de sauvegarde du fichier de contrôle
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '$BACKUP_DIR/%U' MAXPIECESIZE 4G; # Définition du format du ou des fichiers de sauvegarde de la BDD et taille maxi des fichiers de sauvegarde : 4 Go
 
# sauvegarde compressée de la base de données(fichiers de données) et des fichiers archivelog (et on indique le format du nom de fichier de sauvegarde des archivelogs
backup as compressed backupset database format '$BACKUP_DIR/db_bckp_%U' plus archivelog format '$BACKUP_DIR/arch_bckp_%U' delete input;
 
# maintenance : suppression des sauvegardes anciennes
crosscheck backup;
delete noprompt expired backup;
delete noprompt force obsolete;
 
exit 0;
 
EOF
 
# Envoi résultat sauvegarde par courriel
if [ $? -ne 0 ]; then
	echo "PROBLEME RMAN..."
	echo "VERIFIER LA SAUVEGARDE RMAN " | $MAILX -s "RMAN [PROBLEME]: $ORACLE_SID SUR LE SERVEUR $BOX" -S from=$FROM -S smtp=$SMTP $DESTINATAIRE
else
	echo "SAUVEGARDE RMAN OK" | $MAILX -s "RMAN [OK]: $ORACLE_SID SUR LE SERVEUR  $BOX" -S from=$FROM -S smtp=$SMTP $DESTINATAIRE 
fi
 
date

Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Viadeo Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Twitter Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Google Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Facebook Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Digg Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Delicious Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog MySpace Envoyer le billet « Sauvegarde à chaud d'une base Oracle avec RMAN » dans le blog Yahoo

Commentaires