From 361ad26a3110a7e5da70b15db3065193ae6fac73 Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Thu, 12 Jan 2023 12:25:51 +0100 Subject: [PATCH] Create backup_rman_noarchivelog.sh --- backup_rman_noarchivelog.sh | 186 ++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 backup_rman_noarchivelog.sh diff --git a/backup_rman_noarchivelog.sh b/backup_rman_noarchivelog.sh new file mode 100644 index 0000000..a529065 --- /dev/null +++ b/backup_rman_noarchivelog.sh @@ -0,0 +1,186 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ORACLE DATABASE : BACKUP RMAN DB + AL +#------------------------------------------------------------------------------ +# Historique : +# 14/09/2011 : YOU - Creation +# 13/10/2015 : YOU - ajout des params en ligne de commande +# 24/10/2017 : YOU - ajout de level 0 + stby ctlfile + spfile including ctrl file +# 12/01/2023 : YOU - modification pour les bases non archivelog +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# fonction init : c'est ici qu'il faut modifier toutes les variables liees +# a l'environnement +#------------------------------------------------------------------------------ +f_init() { + + export ORACLE_OWNER=oracle + export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS" + + # les differents repertoires + export SCRIPTS_DIR=/home/oracle/scripts + export BKP_LOG_DIR=$SCRIPTS_DIR/logs + export BKP_LOCATION=/u03/backup/${ORACLE_SID}/backup_rman + + # nombre de canaux de sauvegarde en parallel + export BKP_PARALLELISM=1 + # nombre de sauvegarde RMAN en ligne a garder + export BKP_REDUNDANCY=1 + export DATE_JOUR=$(date +%Y%m%d-%H%M) + export BKP_LOG_FILE=${BKP_LOG_DIR}/backup_rman_${ORACLE_SID}_${BKP_TYPE}_${DATE_JOUR}.log + export RMAN_CMD_FILE=${SCRIPTS_DIR}/rman_cmdfile_${ORACLE_SID}_${BKP_TYPE}.rman + # nombre de jours de conservation des logs de la sauvegarde + export BKP_LOG_RETENTION=15 + # nombre de jours de conservation des archivelog sur disque + export ARCHIVELOG_RETENTION=2 + +} # f_init + +#------------------------------------------------------------------------------ +# fonction d'aide +#------------------------------------------------------------------------------ +f_help() { + + cat <> $BKP_LOG_FILE +} #f_print + +#------------------------------------------------------------------------------ +# fonction de traitement des options de la ligne de commande +#------------------------------------------------------------------------------ +f_options() { + + case ${BKP_TYPE} in + [dD][bB]) + BKP_DB_PLUS_AL=TRUE; + ;; + [aA][lL]) + BKP_DB_PLUS_AL=FALSE; + ;; + *) f_help 2; + ;; + esac + +} #f_options + + +#---------------------------------------- +#------------ MAIN ---------------------- +#---------------------------------------- + +while getopts s:h o +do + case $o in + s) ORACLE_SID=$OPTARG; + ;; + h) f_help 0; + ;; + *) f_help 2; + ;; + esac +done + +# traitement de la ligne de commande +f_options + + +[ "${ORACLE_SID}" ] || f_help 2; + +# positionner les variables d'environnement ORACLE +export ORACLE_SID +ORAENV_ASK=NO +PATH=/usr/local/bin:$PATH +. oraenv -s + +# inititalisation des variables d'environnement +f_init + + +# si ce n'est pas le user oracle qui lance le script, on quitte +if (test `whoami` != $ORACLE_OWNER) +then + echo + echo "-----------------------------------------------------" + echo "Vous devez etre $ORACLE_OWNER pour lancer ce script" + echo "-----------------------------------------------------" + exit 2 +fi + +# initialisation des chemins, s'ils n'existent pas ils seront crees par la commande install +install -d ${BKP_LOCATION} +install -d ${BKP_LOG_DIR} + +# verifier si un backup RMAN est en cours +f_is_running + +# generation du script de la sauvegarde RMAN +echo " +run { +CONFIGURE DEVICE TYPE DISK PARALLELISM ${BKP_PARALLELISM} ; +CONFIGURE RETENTION POLICY TO REDUNDANCY ${BKP_REDUNDANCY}; + +CONFIGURE CONTROLFILE AUTOBACKUP ON; +CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BKP_LOCATION}/ctrlfile_auto_%F'; + +SHUTDOWN IMMEDIATE; +STARTUP MOUNT; +BACKUP DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/data_%T_%t_%s_%p' TAG 'DATA_${DATE_JOUR}' as compressed backupset database; +BACKUP CURRENT CONTROLFILE FORMAT '${BKP_LOCATION}/control_%T_%t_%s_%p' TAG 'CTLFILE_${DATE_JOUR}'; +BACKUP SPFILE INCLUDE CURRENT CONTROLFILE FORMAT '${BKP_LOCATION}/spfile_ctrlfile_%T_%t_%s_%p' TAG 'SPFILE_CTRLFILE_${DATE_JOUR}'; + +CROSSCHECK BACKUPSET; +DELETE NOPROMPT OBSOLETE; +DELETE NOPROMPT EXPIRED BACKUPSET; + +SQL \"ALTER DATABASE BACKUP CONTROLFILE TO TRACE as ''${BKP_LOCATION}/controlfile_${ORACLE_SID}.trc'' reuse\"; +SQL \"CREATE PFILE=''${BKP_LOCATION}/pfile_${ORACLE_SID}.ora'' FROM SPFILE\"; + +} +" > ${RMAN_CMD_FILE} + +# Execution du script RMAN +f_print "------------------------- DEBUT DE LA BACKUP -------------------------" +${ORACLE_HOME}/bin/rman target / cmdfile=${RMAN_CMD_FILE} log=${BKP_LOG_FILE} + +# Nettoyage auto des logs : duree de concervation determinee par la variable : ${BKP_LOG_RETENTION} +f_print "------------------------- NETTOYAGE DES LOGS -------------------------" +find ${BKP_LOG_DIR} -type f -iname "backup_rman_${BKP_TYPE}*.log" -mtime +${BKP_LOG_RETENTION} -exec rm -fv "{}" \; >> $BKP_LOG_FILE + +f_print "------------------------- BACKUP ${BKP_TYPE} TERMINE -------------------------"