Vérification de la connexion RMAN dans des scripts Shell

Présentation

Lorsque l’on développe des scripts pour RMAN en Shell (ici bash) sous Linux, il est pratique d’avoir un morceau de script, générique, que l’on inclura dans chacun de ses scripts afin de s’assurer que l’environnement d’exécution de RMAN est correctement configuré.

De la sorte, le code est écrit une fois pour toute et est réutilisable.

Je vous propose ici un script de ce type, qui bien sur est totalement adaptable aux besoins de chacun :

#
# Partie commune des scripts de gestion de sauvegarde.
# 25/05/2012 - FL : Création
#
PASS_RMAN=rman/rmanpwd
CIBLE=T_BASE
PASS=sys/toto
#

# Variables d'environnement
export LANG=fr_FR.UTF-8

if [ $# -ne 0 ] ; then
        if [ $# -lt 2 ] ; then
                echo "** Erreur : Pas assez de paramètres."
                echo "Les paramètres à passer sont : Base cible, mot de passe SYS. Exemple : " $0 "t_base toto"
        fi
fi
if [ "$1" != "" ] ; then
        CIBLE=$1
fi
if [ "$2" != "" ] ; then
        PASS=sys/$2
        echo Pass = $PASS
fi
if [ "$CIBLE" == "" ] ; then
        echo -n "Indiquer le nom de la base cible (déclarée dans le tnsnames) : "
        read  CIBLE
fi
# Vérification de la cible
$ORACLE_HOME/bin/tnsping $CIBLE > /dev/null
if [ $? -ne 0 ] ; then
        echo "** Erreur : Impossible de se connecter à la base $CIBLE."
        echo "Vérifier que la base est UP ou la configuration de tnsnames."
        exit 2
fi
if [ "$PASS" == "" ] ; then
        echo -n "Indiquer le mot de passe SYS de la base cible ($CIBLE) : "
        read  PASS
        PASS=SYS/$PASS
fi
# Vérification de l'authentification
result=$(sqlplus -s $PASS@$CIBLE as sysdba << EOF
exit
EOF
)
ok=$(echo $result | grep -c ERROR)
if [ $ok -ne 0 ] ; then
        echo "** Erreur d'authentification. Vérifier login/mot de passe."
        echo "Le message d'erreur est $result."
        exit 3
fi

Pour utiliser ensuite ce code, mettre là où l’on a besoin de vérifier la connectivité de RMAN :

# Script de vérification de la connectivité
source $HOME/commun_bkup.sh $*

Explications

Le script commence par la définition de 3 variables :

  • PASS_RMAN qui contient le login/mot de passe de connexion à RMAN.
  • CIBLE qui contient la base cible par défaut. (Telle que nommée dans le tnsnames)
  • PASS qui contient le login/mot de passe de connexion à la base cible. Attention, il faut pour RMAN utiliser le compte SYS ou un compte avec les privilèges adéquats.

On examine ensuite s’il y a des paramètres ou non passés sur la ligne de commande, et si le nombre est correct.
S’il n’y a pas de paramètres, le script utilisera les valeurs définie dans les variables vues plus haut.
Sinon, il utilisera les paramètres de la ligne de commande qui doivent être Base cible, mot de passe SYS.

La suite comporte les vérifications de connexion :

On vérifie que la base cible répond à un tnsping
On vérifie que le login/mot de passe de la base cible sont corrects.

 

 

Posts relatifs

Laisser un commentaire


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">