Je vous partage un script que j'ai écrit chez un client, qui permet d'afficher les ressources du clusterware, les dernières sauvegardes de l'OCR et OLR et le statut des voting disks.
Lorsqu'aucune ressource n'est passée en paramètre, le script affiche les informations sus-mentionnées.
Par contre, si on passe une ressource en paramètre, le script affiche juste le statut de cette dernière.
# 29-03-2012 - Creation
initiale - Par Herve Etche
# 15-06-2012 - Ajout de la
section des voting disks - Herve Etche
# Ce script affiche le
statut general des ressources du cluster et les derniers backups de l'OCR et de
l'OLR si on ne lui passe aucun parametre
#Il affiche aussi les
informations concernant les voting disks.
# S'il y a une ressource
passee en parametre, alors il affiche les details concernant la ressource en
question
# Exemple de parametre: resource_script ora.asm -t (affiche seulement le statut de la ressource ora.asm) --
En supposant que resource_script est le nom donne au script
#!/usr/bin/ksh
HOST_NAME=`hostname -s`
GRID_HOME=$(cat
/etc/oratab | awk -F: '/^\+ASM/{print $2}') #Recuperer le GRID_HOME a partir du
fichier /etc/oratab
CRSD_PID=`ps -ef|grep crsd.bin|grep
-v grep|awk '{print $2}'` #Le PID du process crsd
if [ $CRSD_PID ]; then #si
le pid du process crsd existe, cela signifie que le clusterware est demarre
STATUS_CRS=`$GRID_HOME/bin/crsctl stat res ora.asm -t|head -1|cut -d ':'
-f1`
if
[ $STATUS_CRS != "CRS-4535" ]; then #Sinon impossible de communiquer
avec le Cluster Ready Services (crs en cours de demarrage)
if [[ $# -eq 0 ]]; then #Aucune ressource
n'est passee en parametre
#Afficher le status general des
ressources sous forme tabulaire
$GRID_HOME/bin/crsctl stat res -t
#Afficher
le dernier backup de l'OCR (Oracle Cluster Registry)
printf '\033[31m' #couleur rouge
echo -e "\nLes backups de l'OCR
sont effectues sur le MASTER du cluster."
printf '\033[0m' #Annuler couleur
rouge
A_OCR_MAXDATE=`$GRID_HOME/bin/ocrconfig -showbackup auto|awk
'{print($2,$3)}'|sort -r|head -1` #Date et heure du dernier backup auto
M_OCR_MAXDATE=`$GRID_HOME/bin/ocrconfig -showbackup manual|awk
'{print($2,$3)}'|sort -r|head -1` #Date et heure du dernier backup manuel
A_MNODE=`$GRID_HOME/bin/ocrconfig
-showbackup auto|grep -m 1 "$A_OCR_MAXDATE"|cut -d ' ' -f1` #Master
lors du dernier backup auto
A_ERROR=`echo $A_MNODE|cut -c1-4`
M_MNODE=`$GRID_HOME/bin/ocrconfig
-showbackup manual|grep -m 1 "$M_OCR_MAXDATE"|cut -d ' ' -f1` #Master
lors du dernier backup manuel
M_ERROR=`echo
$M_MNODE|cut -c1-4`
printf
'\033[4m' #Souligner phrase
echo "Backup Automatique (chaque
4h):"
printf '\033[0m' #Annuler souligner
phrase
if [ $A_ERROR = "PROT" ];
then #S'il n'existe pas de backup auto
printf '\033[0;32m' #Couleur verte
echo "Il n'existe aucun backup
automatique de l'OCR"
printf '\033[0m' #Annuler couleur
verte
else
echo "Le master au moment du
dernier backup automatique etait: "$A_MNODE
echo -e "Le dernier backup
automatique de l'OCR, effectue sur \""$A_MNODE\"
"est:"
printf '\033[0;32m' #Couleur verte
$GRID_HOME/bin/ocrconfig
-showbackup auto|grep -m 1 "$A_OCR_MAXDATE" #Affichage du dernier
backup auto
printf '\033[0m' #Annuler couleur
verte
fi
printf '\033[4m' #Souligner phrase
echo "Backup Manuel:"
printf '\033[0m' #Annuler souligner
phrase
if [ $M_ERROR = "PROT" ];
then #S'il n'existe pas de backup manuel
printf '\033[0;32m' #Couleur verte
echo "Il n'existe aucun backup
manuel de l'OCR"
printf '\033[0m' #Annuler couleur
verte
else
echo "Le master au moment du
dernier backup manuel etait: "$M_MNODE
echo -e "Le dernier backup
manuel de l'OCR, effectue sur \""$M_MNODE\" "est:"
printf '\033[0;32m' #Couleur verte
$GRID_HOME/bin/ocrconfig
-showbackup manual|grep -m 1 "$M_OCR_MAXDATE" #Affichage du dernier
backup manuel
printf '\033[0m' #Annuler couleur
verte
fi
echo -e "\n"
#Afficher le dernier backup de l'OLR
(Oracle Local Registry) du noeud a partir duquel le script est lance
printf '\033[31m' #couleur rouge
echo "Les backups de l'OLR sont
effectues localement sur chaque noeud du cluster."
printf '\033[0m' #Annuler couleur
rouge
OLR_MAXDATE=`$GRID_HOME/bin/ocrconfig
-local -showbackup|awk '{print($2,$3)}'|sort -r|head -1` #Date et heure du
dernier backup de l'olr
LNODE=`$GRID_HOME/bin/ocrconfig -local
-showbackup|awk '{print $1}'|sort -r|head -1` #Utiliser LNODE et non
"hostname" pour s'assurer de l'existence ou pas d'un backup
L_ERROR=`echo $LNODE|cut -c1-4`
if
[ $L_ERROR = "PROT" ]; then #S'il n'existe pas de backup de l'OLR
printf '\033[0;32m' #Couleur verte
echo -e "Il n'existe aucun
backup de l'OLR sur le noeud local \"`hostname -s`\"\n"
#Utiliser "hostname" car LNODE ici contient une erreur
printf '\033[0m' #Annuler couleur verte
else
echo -e "Le dernier backup de
l'OLR, effectue sur le noeud local \""$LNODE\" "est:"
printf '\033[0;32m' #Couleur verte
$GRID_HOME/bin/ocrconfig -local
-showbackup|grep -m 1 "$OLR_MAXDATE" #Affichage du dernier backup de
l'OLR
printf '\033[0m' #Annuler couleur
verte
echo -e "\n"
fi
#Information sur les voting disks
nb_voting=`$GRID_HOME/bin/crsctl query css votedisk|tail -1|awk '{print
$2}'` #nombre de voting disks
printf
'\033[31m' #couleur rouge
echo "Les donnees des voting
disks sont automatiquement sauvegardees dans l'OCR a chaque changement de
configuration."
printf '\033[0m' #Annuler couleur
rouge
echo -e "Il existe \033[0;32m$nb_voting\033[0m voting disk(s)"
nb=1
while [ $nb -le $nb_voting ]
do
statut=`$GRID_HOME/bin/crsctl query css votedisk|sed 's/^ //g'|grep
^[0-9]|grep -m 1 $nb.|awk '{print $2}'`
diskgrp=`$GRID_HOME/bin/crsctl query css votedisk|sed 's/^ //g'|grep
^[0-9]|grep -m 1 $nb.|cut -d '[' -f2|cut -d ']' -f1`
disk=`$GRID_HOME/bin/crsctl query css
votedisk|sed 's/^ //g'|grep ^[0-9]|grep -m 1 $nb.|cut -d '(' -f2|cut -d ':'
-f2|cut -d ')' -f1`
if [ $diskgrp ]; then
echo -e "Le voting disk numero \033[0;32m$nb\033[0m, situe dans le
diskgroup \033[0;32m$diskgrp\033[0m, disque \033[0;32m$disk\033[0m, a un statut
\033[0;32m$statut\033[0m."
else
echo -e "Le voting disk
numero \033[0;32m$nb\033[0m, situe dans le disque \033[0;32m$disk\033[0m, a un
statut \033[0;32m$statut\033[0m."
fi
nb=$(( $nb + 1 ))
done
echo -e "\n"
else
#Une ressource est passee en parametre
#Afficher seulement le status de cette
derniere
$GRID_HOME/bin/crsctl stat res "$@"
fi
else #Clusterware en cours de demarrage donc
impossible de communiquer avec le crs malgre que le process crsd.bin existe
echo -e
"\n*******************************************************************"
printf '\033[4m' #Souligner phrase
echo "Statut des ressources du
cluster:"
printf '\033[0m' #Annuler souligner
phrase
echo "Le clusterware est en cours de
demarrage sur le noeud local!"
echo "Veuillez patienter ou lancer
la commande a partir d'un autre noeud."
echo -e
"*******************************************************************\n"
fi
else #Pas de process crsd,
donc le clusterware n'est pas demarre
echo -e
"\n*************************************************"
echo " Le clusterware n'est pas demarre
sur ce noeud !"
echo -e
"*************************************************\n"
fi
find
$GRID_HOME/log/$HOST_NAME/client/ocrconfig* -user $USER -type f -mtime +15
-exec rm {} \; #Efface les fichiers log generes par la commande ocrconfig
datant de plus de 15 jours
[oracle@srvhost1 ~]$ ./resource_script.sh
--------------------------------------------------------------------------------
NAME TARGET STATE
SERVER
STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE
srvhost1
ONLINE ONLINE
srvhost2
ora.FRA.dg
ONLINE ONLINE
srvhost1
ONLINE ONLINE
srvhost2
…
…
Les backups de l'OCR sont effectues sur le MASTER du cluster.
Backup
Automatique (chaque 4h):
Le
master au moment du dernier backup automatique etait: srvhost1
Le
dernier backup automatique de l'OCR, effectue sur "srvhost1" est:
srvhost1 2012/06/21 13:55:11
/ora01/app/grid/grid_11g/cdata/crs11gr2/backup00.ocr
Backup
Manuel:
Le
master au moment du dernier backup manuel etait: srvhost2
Le
dernier backup manuel de l'OCR, effectue sur " srvhost2" est:
srvhost2 2012/05/10 15:12:30 /ora01/app/grid/grid_11g/cdata/crs11gr2/backup_20120510_151230.ocr
Les backups de l'OLR sont effectues localement sur chaque
noeud du cluster.
Le
dernier backup de l'OLR, effectue sur le noeud local "srvhost1" est:
srvhost1 2012/04/30 12:07:40 /ora01/app/grid/grid_11g/cdata/srvhost1/backup_20120430_120740.olr
Les donnees des voting disks sont automatiquement
sauvegardees dans l'OCR a chaque changement de configuration.
Il existe 1
voting disk(s)
Le
voting disk numero 1, situe dans le
diskgroup OCRDG, disque DISK_D01, a un statut ONLINE.
[oracle@srvhost1 ~]$
--Exemple: Rechercher toutes les ressources contenant le mot "inst" c'est à dire les instances enregistrées dans le clusterware.
Hope it helps...