révison des script avec gemini : organisation, commentaire et harmonisation
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#------------------------------------------------------------------------------
|
||||
# Historique :
|
||||
# 14/09/2011 : YOU - Creation
|
||||
# 14/10/2015 : YOU - script générique pour toutes les bases
|
||||
# 15/12/2022 : YOU - retention de 1 jour
|
||||
# 25/09/2023 : YOU - simplification du passage des paramètres
|
||||
# 10/11/2025 : Gemini - Améliorations : lisibilité, robustesse et bonnes pratiques
|
||||
#------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction init : c'est ici qu'il faut modifier toutes les variables liées
|
||||
# à l'environnement
|
||||
#------------------------------------------------------------------------------
|
||||
export ORACLE_OWNER=oracle
|
||||
|
||||
# Ajout de set -o pipefail pour la gestion des erreurs dans les pipes
|
||||
set -o pipefail
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction d'aide
|
||||
@@ -22,7 +21,7 @@ echo "
|
||||
syntaxe : $0 ORACLE_SID
|
||||
------
|
||||
"
|
||||
exit $1
|
||||
exit
|
||||
|
||||
} #f_help
|
||||
|
||||
@@ -30,12 +29,12 @@ exit $1
|
||||
#------------ MAIN ----------------------
|
||||
#----------------------------------------
|
||||
|
||||
ORACLE_SID=$1
|
||||
ORACLE_SID=
|
||||
|
||||
[ "${ORACLE_SID}" ] || f_help 2;
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# inititalisation des variables d'environnement
|
||||
# initialisation des variables d'environnement
|
||||
#------------------------------------------------------------------------------
|
||||
export SCRIPTS_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
@@ -52,21 +51,30 @@ fi
|
||||
# Charger les variables d'environnement depuis le fichier .env
|
||||
source "$ENV_FILE"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Variables attendues dans le fichier .env :
|
||||
#------------------------------------------------------------------------------
|
||||
# ORACLE_OWNER : propritaire des binaires oracle (ex: oracle)
|
||||
# EXP_LOCATION : répertoire de stockage des exports (ex: /u01/export)
|
||||
# DPDIR : nom de l'objet DIRECTORY oracle (ex: DATA_PUMP_DIR)
|
||||
# NTFY_URL : URL pour les notifications d'erreur (service ntfy.sh)
|
||||
# NLS_LANG : partie base de la variable NLS_LANG (ex: FRENCH_FRANCE)
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# si ce n'est pas le user oracle qui lance le script, on quitte
|
||||
#------------------------------------------------------------------------------
|
||||
if (test `whoami` != $ORACLE_OWNER)
|
||||
then
|
||||
if [[ "$(whoami)" != "$ORACLE_OWNER" ]]; then
|
||||
echo "Vous devez etre $ORACLE_OWNER pour lancer ce script"
|
||||
exit
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# positionner les variables d'environnement ORACLE
|
||||
# et vérifier si ORACLE_SID est dans /etc/orata
|
||||
# et vérifier si ORACLE_SID est dans /etc/oratab
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# vérifier si ORACLE_SID est pésente dans le fichier /etc/oratab
|
||||
# vérifier si ORACLE_SID est présente dans le fichier /etc/oratab
|
||||
if [ "$(grep -v '^$|^#' /etc/oratab | grep -c "^${ORACLE_SID}:")" -ne 1 ]; then
|
||||
echo "Base ${ORACLE_SID} absente du fichier /etc/oratab ... fin du script"
|
||||
exit 2
|
||||
@@ -95,8 +103,8 @@ 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}
|
||||
# creation du repertoire de sauvegarde. S'il existe la commande ne fait rien
|
||||
mkdir -p ${EXP_LOCATION}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# creation du répertoire DPDIR au niveau de la base
|
||||
@@ -124,11 +132,11 @@ cd ${EXP_LOCATION}
|
||||
tar cfz export_${ORACLE_SID}.tgz export_${ORACLE_SID}.{dmp,log} && rm -f export_${ORACLE_SID}.dmp
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Mail si des erreurs dans le fichier de sauvegarde
|
||||
# Notification en cas d'erreur dans le fichier de sauvegarde
|
||||
#------------------------------------------------------------------------------
|
||||
EXPDP_LOG_FILE=${EXP_LOCATION}/export_${ORACLE_SID}.log
|
||||
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})
|
||||
ERR_COUNT=$(grep -E "^EXP-[0-9]*|^ORA-[0-9]:" ${EXPDP_LOG_FILE} | wc -l)
|
||||
MSG=$(grep -E "^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 ${NTFY_URL}
|
||||
|
||||
Reference in New Issue
Block a user