Geschichte der 
  Familie Durben
History of 
  Family Durben
Tipps und Tricks für Oracle Enterprise Manager

Oracle Enterprise Manager Grid Control 11g: Blackouts  setzen mit EMCLI und EMCTL
Ralf Durben, 26.01.2011

Oracle Enterprise Grid Control 11g bietet neben der grafischen Oberfläche auch ein Command Line Interface (emcli) an. Die allgemeine  Nutzung und Verwendung in verschiedenen Fällen ist sehr gut in folgenden Veröffentlichungen erklärt:

Dazu ergänzend möchte ich hier das Handling von Blackouts mittels EMCLI  beschreiben. Dieses findet auf der Seite des OMS statt. Aber auch auf der Seite der Agenten kann ein Blackout gesetzt werden mit EMCTL.

Setzen von Blackouts mit EMCLI

Zunächst einmal eine Auflistung der in EMCLI bzgl. Blackouts zur Verfügung stehenden Kommandos:

  Blackout Verbs
   create_blackout      -- create a blackout
   delete_blackout      -- delete a blackout
   get_blackout_details -- get detailed info for a blackout
   get_blackout_reasons -- list all blackout reasons
   get_blackout_targets -- list targets for a blackout
   get_blackouts        -- list blackouts
   stop_blackout        -- stop a blackout

Erstellen eines Blackouts

Die allgemeine Syntax zum Erstellen eines Blackouts lautet

emcli create_blackout
     -name="name"
     add_targets="name1:type1;name2:type2;..."...
     reason="reason"
     [-description="description"]
     [-jobs_allowed]
     [-propagate_targets]
     schedule=
         frequency:];
         duration:[HH...][:mm...];
         [start_time:];
         [end_time:];
         [repeat:<#m|#h|#d|#w>];
         [months:<#,#,...>];
         [days:<#,#,...>];
         [tzinfo:]
         [tzoffset:#|[-][HH][:mm]]
         [tzregion:<...>]

Ich erkläre hier nicht die komplette Syntax, denn dazu gibt es das Handbuch auf OTN. Vielmehr gebe ich hier Beispiele für gängige Aufgaben an. So kann ein  Blackout zum Beispiel auf folgende Arten erstellt werden:

1. Beispiel

Für die Datenbank ORCL soll ein Blackout für die Dauer von 30 Minuten  gesetzt werden, weil z.B. ein Offline Backup erstellt wird. (OK, jetzt  werden einige denken, warum man heute noch ein Offline Backup erstellen sollte, da es doch auch Online geht. Es gibt aber durchaus noch Oracle DBAs, die Offline Backup erstellen, und es ist ja nur ein Beispiel)

emcli create_blackout 
     -name=Blackout1
     -add_targets=ORCL:oracle_database
     -schedule="duration::30"
     -reason="Die Datenbank wird gesichert"

2. Beispiel

 Für die Datenbank ORCL soll ein Blackout für ein festes Zeitintervall gesetzt werden.

emcli create_blackout 
     -name=Blackout1
     -add_targets=ORCL:oracle_database
     -schedule="frequency:once;start_time:11-01-24 23:00;duration::60;tzinfo:target:tzoffset:1"
     -reason="Die Datenbank wird gesichert"

3. Beispiel

 Man kann auch für mehrere Targets mit einem Kommando ein Blackout setzen. Der Timezone Offset gibt dabei an, welche Zeitzone für die Bestimmung der Ausführungszeit verwendet werden soll, hier also die Zeitzone der ersten angegebenen Datenbank, also ORCL1:

emcli create_blackout 
     -name=Blackout1
     -add_targets="ORCL1:oracle_database;ORCL2:oracle_database"
     -schedule="frequency:once;start_time:11-01-24 23:00;duration::60;tzinfo:target:tzoffset:1"
     -reason="Die Datenbank wird gesichert"

4. Beispiel

Man kann ein Blackout auch für alle von einem Target abhängigen Targets  setzen. Hier wird der Blackout bis zu einem festen Endzeitpunkt gesetzt:

emcli create_blackout 
     -name=Blackout2
     -add_targets=meinserver:host
     -propagate_targets
     -schedule="end_time:2011-01-26 19:00;tzinfo:specified;tzregion:Europe/Berlin"
     -reason="Maschine wird repariert"

Bei den Targets muss man ja den Target Typ angeben. Es stellt sich die Frage, wie diese internen Typnamen aussehen. Dazu gibt es einen  einfachen Trick: Man kann nämlich mit emcli eine Auflistung aller in Grid Control verwalteten Targets bekommen, mit

emcli get_targets 
Status ID  Status      Target Type     Target Name
1          Up          host            gridcontrol.durben.de
1          Up          oracle_database ORCL
1          Up          oracle_emd      durben1.durben.de:3872
1          Up          oracle_listener LISTENER_durben1.durben.de
...

Die möglichen Target Typen werden damit also frei Haus geliefert.

Anzeigen aller Blackouts

Die derzeitig aktiven Blackouts kann man sich anzeigen lassen mit

emcli get_blackouts
     [-target="name1:type1" | -hostnames="host1;host2;..."]
     [-noheader]
     [-script | -format=
           [name:];
           [column_separator:"column_sep_string"];
           [row_separator:"row_sep_string"];
     ]

Man kann also die Suche einschränken nach Targets. Das ist bei einer großen Anzahl aktiver Blackouts sicherlich interessant. Einen  Komplettüberblick bekommt man einfach mit

emcli get_blackouts
Name       Created By  Status  Status ID  Next Start          Duration Reason                   Frequency Repeat Start Time           End Time            Previous End TZ Region      TZ Offset          
Blackout2  RDURBEN     Started 4          2011-01-26 15:07:30 03:53    Maschine wird repariert  once      none   2011-01-26 15:07:30  2011-01-26 19:00:00 none         Europe/Berlin  +00:00
 

Stoppen und Löschen von Blackouts

Blackouts werden immer mit einer Dauer oder Endzeitpunkt angegeben. Mann kann sie aber auch vorzeitig beenden mit

emcli stop_blackout
     -name="name"
     [-createdby="blackout_creator"]

Also im obigen Beispiel kann man den Blackout stoppen mit

emcli stop_blackout -name="Blackout2"

Der Blackout wird als gestoppt angezeigt:

emcli get_blackouts
Name       Created By  Status  Status ID  Next Start  Duration  Reason                  Frequency  Repeat  Start Time          End Time             Previous End        TZ Region      TZ Offset
Blackout2  RDURBEN     Stopped 10         none        03:53     Maschine wird repariert once       none    2011-01-26 15:07:30 2011-01-26 19:00:00  2011-01-26 15:14:08 Europe/Berlin  +00:00
 

und kann nun gelöscht werden mit

emcli delete_blackout -name="Blackout2"

Setzen von Blackouts mit EMCTL

Soll ein Blackout auf der Agentenseite gesetzt werden, zum Beispiel als  Teil eines Wartungsskripts, so kommt die Utility EMCTL zum Einsatz. Leider gibt es hier kein Kommando zum Auflisten aller von diesem Agenten überwachten Targets, aber dass kann der Datei $AGENT_HOME/sysman/emd/targets.xml entnommen werden.

Erstellen eines Blackouts

Ein Blackout wird erstellt mit

emctl start blackout  [-nodeLevel] [[:]].... [-d ] [-nowait]

also zum Beispiel

./emctl start blackout Blackout1 radu1:oracle_database
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Blackout Blackout1 added successfully
EMD reload completed successfully

Anzeigen von Blackouts

Die laufenden Blackouts können angezeigt werden mit

emctl stop blackout  [-nowait]

Im Beispiel sieht das dann so aus:

./emctl status blackout
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Blackoutname = Blackout1
Targets = (radu1:oracle_database,)
Time = ({2011-01-26|16:16:07,|} )
Expired = False

Löschen eines Blackouts

Ein Blackout wird gelöscht mit

emctl status blackout [[:]]....

Im obigen Beispiel also

./emctl stop blackout Blackout1
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Blackout Blackout1 stopped successfully
EMD reload completed successfully

Zurück zur Tippübersicht

Zurück zur Tippübersicht

[Home] [Impressum] [Oracle Tipps und Tricks]