Sauvegarde � chaud d'une base Oracle avec RMAN
par
, 30/09/2019 � 09h46 (4293 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='[email protected]' # <== adapter ici l'adrel à laquelle vous voulez envoyer le message de résultat de la sauvegarde FROM='[email protected]' # <== 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