Il y a quelques semaines, lors d'une mission, les répertoires contenant une base Oracle en fonctionnement se sont avérés peser plus de 70Go; or, une sauvegarde effectuée sur une machine Windows montrait que le dump de la base ne pesait « que » 1,7Go. Le serveur devant être sauvegardé de façon régulière, il a alors été décidé de ne sauvegarder que le dump, et pas la base "à chaud". Il fallait donc trouver un moyen automatique de sauvegarder la base, moyen qui fût trouvé dans le script Windows qui faisait anciennement les dumps: la commande exp
(pour export).
La sauvegarde se fait alors très simplement:
[bash] # Attention, utilisation de GNU date OLDDATE=`date -d "8 days ago" +"%Y%m%d"` DATE=`date +"%Y%m%d"` BACKUPDIR="/oracle/backups" USER=utilisateur PASS=password # On passe en utilisateur oracle, on lance la sauvegarde en # spécifiant le fichier de dump et on envoit les logs dans un # fichier de log en complément du dump # enfin, on efface les sauvegardes de 8 jours avant su - oracle -c "exp ${USER}/${PASS} \ file=${BACKUPDIR}/backup-${DATE}.dump \ &> ${BACKUPDIR}/backup-${DATE}.log \ && rm -f ${BACKUPDIR}/backup-${OLDDATE}.*"
À noter, il existe la commande imp
(pour import), qui permet d'effectuer l'opération inverse.
3 réactions
1 De Marich - 11/04/2006, 13:35
Un Kouin A miam miam ?
Fais gaffe, c'est pas à la portée du premier venu..surtout quand on est normand : mouaaaaaaaaaaaah !!!
Rien à voir avec cette note, je sais, j'en suis quasiment confuse mais d'un autre côté, j'ai rien compris...
Piouuuuuu !
A bientôt peut être, au détour d'une rue ou d'un blog, WHO KNOWS ?
2 De David - 15/03/2007, 09:45
Yop,
Rajoute un CONSISTENT=Y dans tes paramètres et c'est tout bon...
Bah oui l'export par défaut s'occupe pas de savoir si quelqu'un a modifié une table pendant que tu fait ton export..
Voila a+
3 De Fred - 24/08/2009, 22:14
Bonsoir,
Tu peux eventuellement zipper a la volée en passant par un fichier pipe :
su - oracle -c "mknod /tmp/sauvegarde p \
&& bzip2 -9 -c </tmp/sauvegarde >${BACKUPDIR}/backup-${DATE}.dump.bz2 & ; \
exp ${USER}/${PASS} \
file=/tmp/sauvegarde \
&> ${BACKUPDIR}/backup-${DATE}.log \
&& rm -f ${BACKUPDIR}/backup-${OLDDATE}.* ; \
rm -f /tmp/sauvegarde"
L'explication de la manip se trouve dans un post de mon blog :
http://frederic.ple.name/index.php/...
Je ne le recommande toutefois pas pour de grosses bases car cela ralentit le dump (préférer éventuellement un gzip) ou bien envoyer le dump a la volée via le réseau pour le compresser sur une autre machine :p
Le probleme de Exp c est d'ailleurs le temps que ca prend (et faut aussi voir le imp).