From 1af86bea07f838c51239581bb1154eaea2b444bf Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Fri, 22 Dec 2023 19:54:54 +0100 Subject: [PATCH] script RMAN des AL --- backup_archive_fnct_FRA.sh | 2 +- backup_rman_AL.sh | 150 +++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 backup_rman_AL.sh diff --git a/backup_archive_fnct_FRA.sh b/backup_archive_fnct_FRA.sh index 38c55aa..b14b995 100644 --- a/backup_archive_fnct_FRA.sh +++ b/backup_archive_fnct_FRA.sh @@ -12,7 +12,7 @@ ORACLE_SID=$1 # Variables d'initialisation script_dir=/home/oracle/scripts pct_limit=80 -action_script="${script_dir}/backup_rman.sh -t AL ${ORACLE_SID}" +action_script="sh ${script_dir}/backup_rman_AL.sh ${ORACLE_SID}" # # positionner les variables d'environnement ORACLE diff --git a/backup_rman_AL.sh b/backup_rman_AL.sh new file mode 100644 index 0000000..13402e9 --- /dev/null +++ b/backup_rman_AL.sh @@ -0,0 +1,150 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ORACLE DATABASE : BACKUP RMAN AL +#------------------------------------------------------------------------------ +# Historique : +# 22/12/2023 : YOU - backup des AL seulement +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# fonction init : c'est ici qu'il faut modifier toutes les variables liées +# à l'environnement +#------------------------------------------------------------------------------ +f_init() { + + export ORACLE_OWNER=oracle + + # les différents répertoires + export SCRIPTS_DIR=/home/oracle/scripts + export BKP_LOG_DIR=$SCRIPTS_DIR/logs + export BKP_LOCATION=/u04/backup/${ORACLE_SID}/rman + + # nombre de sauvegarde RMAN en ligne à garder + export BKP_REDUNDANCY=1 + export DATE_JOUR=$(date +%Y.%m.%d-%H.%M) + export BKP_LOG_FILE=${BKP_LOG_DIR}/backup_rman_AL_${ORACLE_SID}_${DATE_JOUR}.log + export RMAN_CMD_FILE=${BKP_LOG_DIR}/rman_cmd_file_${ORACLE_SID}.rman + + # nombre de jours de conservation des logs de la sauvegarde + export BKP_LOG_RETENTION=15 + + # nombre de canaux à utiliser + export PARALLELISM=1 + +} # f_init + +#------------------------------------------------------------------------------ +# fonction d'aide +#------------------------------------------------------------------------------ +f_help() { + + cat <> $BKP_LOG_FILE +} #f_print + + +#------------------------------------------------------------------------------ +# traitement de la ligne de commande +#------------------------------------------------------------------------------ + +ORACLE_SID=$1 + +[ "${ORACLE_SID}" ] || f_help 2; + +# positionner les variables d'environnement ORACLE +export ORACLE_SID +ORAENV_ASK=NO +PATH=/usr/local/bin:$PATH +. oraenv -s >/dev/null + +#------------------------------------------------------------------------------ +# inititalisation des variables d'environnement +#------------------------------------------------------------------------------ +f_init + +# si la base est standby on sort +${SCRIPTS_DIR}/is_standby.sh ${ORACLE_SID} && exit 2 + +#------------------------------------------------------------------------------ +# 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 créés par la commande install +#------------------------------------------------------------------------------ +install -d ${BKP_LOCATION} +install -d ${BKP_LOG_DIR} + +#------------------------------------------------------------------------------ +# génération du script de la sauvegarde RMAN +#------------------------------------------------------------------------------ + +# récupération du mode archive ou pas +LOG_MODE=$($ORACLE_HOME/bin/sqlplus -S / as sysdba < ${RMAN_CMD_FILE} +else + # run { + echo " + CONFIGURE DEVICE TYPE DISK PARALLELISM $PARALLELISM ; + CONFIGURE RETENTION POLICY TO REDUNDANCY ${BKP_REDUNDANCY}; + SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; + BACKUP DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/arch_%T_%t_%s_%p' TAG 'ARCH_${DATE_JOUR}' AS COMPRESSED BACKUPSET ARCHIVELOG ALL DELETE ALL INPUT; + CROSSCHECK ARCHIVELOG ALL; + DELETE NOPROMPT OBSOLETE; + DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; + BACKUP CURRENT CONTROLFILE FORMAT '${BKP_LOCATION}/control_%T_%t_%s_%p' TAG 'CTLFILE_${DATE_JOUR}'; + " > ${RMAN_CMD_FILE} + # } +fi +#------------------------------------------------------------------------------ +# Execution du script RMAN +#------------------------------------------------------------------------------ +f_print "------------------------- DEBUT DE LA BACKUP -------------------------" +${ORACLE_HOME}/bin/rman target / cmdfile=${RMAN_CMD_FILE} log=${BKP_LOG_FILE} + +#------------------------------------------------------------------------------ +# Mail si des erreurs dans le fichier de sauvegarde +#------------------------------------------------------------------------------ +# ERR_COUNT=$(egrep "^RMAN-[0-9]*|^ORA-[0-9]:" ${BKP_LOG_FILE} | wc -l) +ERR_COUNT=$(egrep "^ORA-[0-9]:" ${BKP_LOG_FILE} | wc -l) + +if [ ${ERR_COUNT} -ne 0 ]; then + curl -H "t: Erreur RMAN base ${ORACLE_SID} sur le serveur $(hostname)" -d "$(cat ${BKP_LOG_FILE})" -L https://ntfy.axiome.io/backup-rman +fi + +#------------------------------------------------------------------------------ +# Nettoyage auto des logs : durée de concervation déterminée 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 -------------------------"