D:\>crsctl status resource –toder kürzer:
D:\>crsctl stat res –t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE OFFLINE rac2 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN3.lsnr 1 ONLINE OFFLINE ora.orcl.db 1 OFFLINE OFFLINE Instance Shutdown 2 OFFLINE OFFLINEDieser Befehl liefert - gesteuert durch den Parameter "-t" eine eingeschränkte tabellarische Ansicht aller Ressourcen. "-h" liefert möglicher weitere Parameter.
resName [...] Ein oder mehrere durch Leerzeichen getrennte Ressourcennamen -w Ressourcenfilter (Beispiel: "TYPE = ora.database.type") -p Gibt statische Konfiguration aus -v Gibt Laufzeitkonfiguration aus\r -e Wertet Sonderwerte einer Ressourceninstanz aus\r -f Gibt vollständige Konfiguration aus\r -l Gibt alle Kardinalitäts- und Grad-Member aus -g Prüft, ob Ressourcen registriert sind\r -k Kardinalitäts-ID\r -d Grad-ID\r -n Servername\r -s Ruft Zielserver für Umspeichern ab\r -t Tabellarische AnzeigeWill man das Ergebnis verskripten, ist die tabellarische Ausgabe ungeeignet. Man lässt besser den Schalter „-t“ weg.
D:\>crsctl stat res NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=ONLINE STATE=OFFLINE NAME=ora.LISTENER_SCAN3.lsnr TYPE=ora.scan_listener.type TARGET=ONLINE STATE=OFFLINE NAME=ora.orcl.db TYPE=ora.database.type TARGET=OFFLINE, OFFLINE STATE=OFFLINE, OFFLINEDieses Ergebnis kann man schon besser in z.B. der Powershell verarbeiten.
Die Ausgabe ist allerdings im Normalfall allumfassend.
Filter - Ich will nur Probleme sehen!
Wenn man nicht die Dinge sehen will, die in Ordnung sind, sondern nur die, die Probleme bedeuten, kann die Ausgabe mit „-w“ gefiltert werden.D:\skripte>crsctl stat res -t -w "STATE != ONLINE"Oder
D:\skripte>crsctl stat res -t -w "TARGET != ONLINE"Das lässt sich hervorragend kombinieren:
D:\skripte>crsctl stat res -t -w "(TARGET != ONLINE OR STATE != ONLINE)" -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE OFFLINE rac2 ora.gsd OFFLINE OFFLINE rac1 OFFLINE OFFLINE rac2 ora.ons ONLINE OFFLINE rac2 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN3.lsnr 1 ONLINE OFFLINE ora.orcl.db 1 OFFLINE OFFLINE Instance Shutdown 2 OFFLINE OFFLINEGSD und ONS sind uninteressant? OK:
D:\skripte>crsctl stat res -t -w "((TARGET != ONLINE) OR (STATE != ONLINE)) AND (NAME != ora.gsd) AND (NAME != ora.ons)"Besser als NAME ist die Verwendung von TYPE:
D:\skripte>crsctl stat res -t -w "((TARGET != ONLINE) OR (STATE != ONLINE)) AND (TYPE != ora.gsd.type) AND (TYPE != ora.ons.type)" -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE OFFLINE rac2 ------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN3.lsnr 1 ONLINE OFFLINE ora.orcl.db 1 OFFLINE OFFLINE Instance Shutdown 2 OFFLINE OFFLINEUnd das Ganze noch einmal ohne "-t":
D:\skripte>crsctl stat res -w "((TARGET != ONLINE) OR (STATE != ONLINE)) AND (TYPE != ora.gsd.type) AND (TYPE != ora.ons.type)" NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=ONLINE STATE=OFFLINE NAME=ora.LISTENER_SCAN3.lsnr TYPE=ora.scan_listener.type TARGET=ONLINE STATE=OFFLINE NAME=ora.orcl.db TYPE=ora.database.type TARGET=OFFLINE, OFFLINE STATE=OFFLINE, OFFLINE
Weiterverarbeitung in der Powershell
Auf Grundlage einer gefilterten crsctl-Ausgabe lassen sich verschiedene Möglichkeiten umsetzen.So könnte man einen Listener, der OFFLINE gegangen ist, neu starten oder den Admin per Email über Probleme benachrichtigen lassen.
Hier ein sehr minimalistisches Beispiel:
$a = crsctl stat res -w "((TARGET != ONLINE) OR (STATE != ONLINE)) AND ((TYPE = ora.listener.type) OR (TYPE = ora.scan_listener.type))"; $to = "admin@meinefirma.de" $from = "rac@meinefirma.de" $smtp = "email.meinefirma.de" $body = ''; $subject = ''; if($a){ $subject = "Listener OFFLINE!"; $body = "Einer oder mehrere Listener sind offline!`r`n`r`n" $body += [string]$a -replace " ", "`r`n" } else{} send-mailmessage -to $to -from $from -body $body -subject $subject -smtpserver $smtpDas Skript führt zunächst crsctl aus und filtert nach Listenern, die nicht ONLINE sind.
Die Rückgabe wird in eine Email gepackt und versendet.
Keine Kommentare:
Kommentar veröffentlichen