From 7766b478215b9c181cc277ecee9cc030d729a73a Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Thu, 25 Jul 2024 21:16:49 +0200 Subject: [PATCH] ajout de.env toutes les variables d'environnement dans .env et non dans les scripts --- .env.local | 43 +++++++++++++++++++++++++++++++++ .gitignore | 2 ++ backup_rman.sh | 43 ++++++++++++--------------------- backup_rman_AL.sh | 16 +++++++++++- backup_rman_AL_fct_FRA_Usage.sh | 28 +++++++++++++++------ backup_rman_alldb.sh | 23 ++++++++++++++++-- backup_rman_noarchivelog.sh | 16 +++++++++++- export_datapump.sh | 41 +++++++++++++++---------------- export_datapump_alldb.sh | 25 ++++++++++++++++--- 9 files changed, 173 insertions(+), 64 deletions(-) create mode 100644 .env.local create mode 100644 .gitignore diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..75e2e8a --- /dev/null +++ b/.env.local @@ -0,0 +1,43 @@ +# les variables d'environnement + +# compte Os du propriétaire de la base +export ORACLE_OWNER=oracle +# répertoire où se trouvent les scripts en cours +export SCRIPTS_DIR=/home/oracle/scripts +# répertoire où seront stockés les fichiers logs des différents scripts +export BKP_LOG_DIR=$SCRIPTS_DIR/logs +# nombre de jours de conservation des logs de la sauvegarde +export BKP_LOG_RETENTION=15 + + +# --- RMAN --- +# nombre de canaux à utiliser +export PARALLELISM=1 +# répertoire où seront stockés les sauvegardes RMAN +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_${ORACLE_SID}_${DATE_JOUR}.log +export RMAN_CMD_FILE=${BKP_LOG_DIR}/rman_cmd_file_${ORACLE_SID}.rman +# format de la date pour l'affichage RMAN +export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS" +# --- RMAN --- + +# --- backup RMAN des AL conditionnelle +PCT_LIMIT=85 # pourcentagre de la FRA au-dessus duquel on déclenche une sauvegarde des archiveslogs +ACTION_SCRIPT="${script_dir}/backup_rman_AL.sh" # script RMAN de sauvegarde des archivelogs +# --- backup RMAN des AL conditionnelle + +# --- EXPDP --- +# paramètres de langue pour expdp +export LANG=en_US.UTF-8 +export NLS_LANG=AMERICAN_AMERICA +# répertoire destination de l'export +export EXP_LOCATION=/u04/backup/$ORACLE_SID/expdp +# nom du répertoire au niveau de la base de données +export DPDIR=EXPDP_DIR +# --- EXPDP --- + +# URL de notification +export NTFY_URL="https://ntfy.axiome.io/backup-rman" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f55aff5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# fichier qui contient les variables d'environnement +.env \ No newline at end of file diff --git a/backup_rman.sh b/backup_rman.sh index 3ff5a5c..66de497 100755 --- a/backup_rman.sh +++ b/backup_rman.sh @@ -11,34 +11,9 @@ # 09/11/2022 : YOU - backup simple => db full # 10/08/2023 : YOU - base noarchivelog : execution de rman validate # 25/09/2023 : YOU - simplification, 1 seul parametre pour le script +# 25/07/2024 : YOU - fichier .env pour les variables d'environnement #------------------------------------------------------------------------------ -#------------------------------------------------------------------------------ -# 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_${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 @@ -76,7 +51,19 @@ export ORACLE_SID #------------------------------------------------------------------------------ # inititalisation des variables d'environnement #------------------------------------------------------------------------------ -f_init + +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" #------------------------------------------------------------------------------ # vérifier si ORACLE_SID est dans /etc/orata @@ -184,7 +171,7 @@ ${ORACLE_HOME}/bin/rman target / cmdfile=${RMAN_CMD_FILE} log=${BKP_LOG_FILE} 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 + curl -H "t: Erreur RMAN base ${ORACLE_SID} sur le serveur $(hostname)" -d "$(cat ${BKP_LOG_FILE})" -L ${NTFY_URL} fi #------------------------------------------------------------------------------ diff --git a/backup_rman_AL.sh b/backup_rman_AL.sh index 2d867bb..aa5c300 100755 --- a/backup_rman_AL.sh +++ b/backup_rman_AL.sh @@ -70,7 +70,21 @@ ORACLE_SID=$1 #------------------------------------------------------------------------------ # inititalisation des variables d'environnement #------------------------------------------------------------------------------ -f_init +# f_init + +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" + # vérifier si ORACLE_SID est pésente dans le fichier /etc/oratab if [ "$(grep -v '^$|^#' /etc/oratab | grep -c "^${ORACLE_SID}:")" -ne 1 ]; then diff --git a/backup_rman_AL_fct_FRA_Usage.sh b/backup_rman_AL_fct_FRA_Usage.sh index 50f233a..0b4a36f 100755 --- a/backup_rman_AL_fct_FRA_Usage.sh +++ b/backup_rman_AL_fct_FRA_Usage.sh @@ -11,6 +11,23 @@ # 21/12/2023 : YOU - Creation #------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +# inititalisation des variables d'environnement +#------------------------------------------------------------------------------ + +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" + for sid in $(ps -ef | grep pmon | grep -v grep | cut -d_ -f3 | sort) do @@ -29,11 +46,6 @@ do PATH=/usr/local/bin:$PATH . oraenv -s >/dev/null - # Variables d'initialisation - script_dir=/home/oracle/scripts - pct_limit=85 - action_script="${script_dir}/backup_rman_AL.sh ${ORACLE_SID}" - # # calcul de la taille FRA # @@ -48,10 +60,10 @@ EOF # # Si la FRA dépasse la limite on lance le script # - if [ "${pct_fra_used}" -gt ${pct_limit} ] + if [ "${pct_fra_used}" -gt ${PCT_LIMIT} ] then - echo ${pct_fra_used} : backup des archivelog necessaire par script ${action_script} - sh ${action_script} + echo ${pct_fra_used} : backup des archivelog necessaire par script ${ACTION_SCRIPT} + sh ${ACTION_SCRIPT} ${ORACLE_SID} else echo ${pct_fra_used} : backup des archivelog non necessaire fi diff --git a/backup_rman_alldb.sh b/backup_rman_alldb.sh index 6253d49..b7fcdfa 100644 --- a/backup_rman_alldb.sh +++ b/backup_rman_alldb.sh @@ -1,12 +1,31 @@ #!/bin/sh #------------------------------------------------------------------------------ # ORACLE DATABASE : BACKUP ALL B +# sauvegarde de touts les bases ouvertes (en mode archivelog) #------------------------------------------------------------------------------ -# sauvegarde de touts les bases ouvertes (en mode archivelog) -export SCRIPTS_DIR=/home/oracle/scripts +#------------------------------------------------------------------------------ +# inititalisation des variables d'environnement +#------------------------------------------------------------------------------ +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" + + +#------------------------------------------------------------------------------ +# boucle de sauvegarde des bases +#------------------------------------------------------------------------------ for b in $(ps -ef | grep pmon | grep -v grep | cut -d_ -f3 | sort) do ${SCRIPTS_DIR}/backup_rman.sh $b diff --git a/backup_rman_noarchivelog.sh b/backup_rman_noarchivelog.sh index d2fd5d4..6f20e4e 100755 --- a/backup_rman_noarchivelog.sh +++ b/backup_rman_noarchivelog.sh @@ -100,8 +100,22 @@ done [ "${ORACLE_SID}" ] || f_help 2; +#------------------------------------------------------------------------------ # inititalisation des variables d'environnement -f_init +#------------------------------------------------------------------------------ + +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" # vérifier si ORACLE_SID est pésente dans le fichier /etc/oratab if [ "$(grep -v '^$|^#' /etc/oratab | grep -c "^${ORACLE_SID}:")" -ne 1 ]; then diff --git a/export_datapump.sh b/export_datapump.sh index 5410157..6f754ce 100755 --- a/export_datapump.sh +++ b/export_datapump.sh @@ -11,21 +11,6 @@ # à l'environnement #------------------------------------------------------------------------------ export ORACLE_OWNER=oracle -export MAIL_RCPT=yacine.oumghar@axiome.io - -f_init() { - - # positionner les variables d'environnement - export SCRIPTS_DIR=/home/oracle/scripts - # paramètres de lang - export LANG=en_US.UTF-8 - export NLS_LANG=AMERICAN_AMERICA.${NLS_CHARACTERSET} - - # répertoire destination de l'export - export EXP_LOCATION=/u04/backup/$ORACLE_SID/expdp - # nom du répertoire au niveau de la base de données - export DPDIR=EXPDP_DIR -} #f_init #------------------------------------------------------------------------------ # fonction d'aide @@ -49,6 +34,22 @@ ORACLE_SID=$1 [ "${ORACLE_SID}" ] || f_help 2; +#------------------------------------------------------------------------------ +# inititalisation des variables d'environnement +#------------------------------------------------------------------------------ +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" + #------------------------------------------------------------------------------ # si ce n'est pas le user oracle qui lance le script, on quitte #------------------------------------------------------------------------------ @@ -58,11 +59,6 @@ then exit fi -#------------------------------------------------------------------------------ -# inititalisation des variables d'environnement -#------------------------------------------------------------------------------ -f_init - #------------------------------------------------------------------------------ # positionner les variables d'environnement ORACLE # et vérifier si ORACLE_SID est dans /etc/orata @@ -94,6 +90,9 @@ EOF ) NLS_CHARACTERSET=$(echo $NLS_CHARACTERSET | sed 's/^\s*//g') +# on complète la variable NLS_LANG qui vient du fichier .env avec la variable NLS_CHARACTERSET +export NLS_LANG="${NLS_LANG}.${NLS_CHARACTERSET}" + # creation du repertoire de sauvegarde. S'il existe la commande install ne fait rien install -d ${EXP_LOCATION} @@ -130,5 +129,5 @@ ERR_COUNT=$(egrep "^EXP-[0-9]*|^ORA-[0-9]:" ${EXPDP_LOG_FILE} | wc -l) MSG=$(egrep "^EXP-[0-9]*|^ORA-[0-9]:" ${EXPDP_LOG_FILE}) if [ ${ERR_COUNT} -ne 0 ]; then - curl -H "t: Erreur expdp base ${ORACLE_SID} sur le serveur $(hostname)" -d "$MSG" -L https://ntfy.axiome.io/expdp + curl -H "t: Erreur expdp base ${ORACLE_SID} sur le serveur $(hostname)" -d "$MSG" -L ${NTFY_URL} fi \ No newline at end of file diff --git a/export_datapump_alldb.sh b/export_datapump_alldb.sh index 84ac0b1..0ce7edc 100755 --- a/export_datapump_alldb.sh +++ b/export_datapump_alldb.sh @@ -6,9 +6,28 @@ # 21/04/2023 : YOU - Creation : export datapump de toutes les bases ouvertes #------------------------------------------------------------------------------ -# toutes les bases ouvertes sont sauvegardées par le expdp +#------------------------------------------------------------------------------ +# inititalisation des variables d'environnement +#------------------------------------------------------------------------------ -for i in $(ps -ef | grep pmon | grep -v grep | cut -d_ -f3 | egrep -v '+ASM|+APX) +# Nom du fichier .env +ENV_FILE=".env" + +# Vérifier si le fichier .env existe +if [ ! -f "$ENV_FILE" ]; then + echo "Erreur : Le fichier $ENV_FILE n'existe pas." + echo "Erreur : Impossible de charger les variables d'environnement." + exit 1 +fi + +# Charger les variables d'environnement depuis le fichier .env +source "$ENV_FILE" + +#------------------------------------------------------------------------------ +# toutes les bases ouvertes sont sauvegardées par le expdp +#------------------------------------------------------------------------------ + +for i in $(ps -ef | grep pmon | grep -v grep | cut -d_ -f3 | egrep -v '+ASM|+APX') do - sh /home/oracle/scripts/export_datapump.sh $i + sh ${SCRIPTS_DIR}/export_datapump.sh $i done