Die Befehle können sequentiell auf einem Datenbankpartitions-Server nach dem anderen oder parallel ausgeführt werden. Wenn Sie die Befehle auf Plattformen unter UNIX parallel ausführen, können Sie wählen, ob die Ausgabe an einen Puffer gesendet werden soll, in dem sie zur späteren Anzeige gesammelt wird (Standardmodus), oder ob die Ausgabe auf der Maschine angezeigt werden soll, auf der der Befehl abgesetzt wird. Unter Windows NT wird die Ausgabe bei paralleler Ausführung der Befehle auf der Maschine angezeigt, auf der der Befehl abgesetzt wurde.
Zur Verwendung des Befehls rah geben Sie folgendes ein:
rah befehl
Zur Verwendung des Befehls db2_all geben Sie folgendes ein:
db2_all befehl
Hilfe zur Syntax von rah erhalten Sie durch folgende Eingabe:
rah "?"
Als Befehl kann fast alles angegeben werden, was in eine interaktive Eingabeaufforderung eingegeben werden könnte, einschließlich, zum Beispiel, mehrerer Befehle, die nacheinander ausgeführt werden. Auf Plattformen unter UNIX werden mehrere Befehle durch ein Semikolon (;) voneinander getrennt. Unter Windows NT werden mehrere Befehle durch ein Et-Zeichen (&) voneinander getrennt. Das Trennzeichen darf jedoch nicht nach dem letzten Befehl verwendet werden.
Das folgende Beispiel zeigt die Verwendung des Befehls db2_all, um die Datenbankkonfiguration auf allen Datenbankpartitions-Servern zu ändern, die in der Knotenkonfigurationsdatei angegeben sind. Da das Zeichen Semikolon (;) in den doppelten Anführungszeichen mit eingeschlossen ist, wird die Anforderung parallel ausgeführt:
db2_all ";UPDATE DB CFG FOR sample USING LOGFILSIZ=100"
Sie können die folgenden Befehle verwenden:
Unter Windows NT werden alle Prozesse, die auf allen Datenbankpartitions-Servern ausgeführt werden, veranlaßt, eine Ablaufverfolgungsliste für Aufrufe in die Datei Pxxxx.nnn zu schreiben, wobei Pxxxx die Prozeß-ID und nnn die Knotennummer ist.
Auf Plattformen unter UNIX führen diese Befehle rah mit bestimmten impliziten Einstellungen wie zum Beispiel folgenden aus:
Unter Windows NT führen diese Befehle rah mit paralleler Ausführung auf allen Maschinen aus.
Sie können den Befehl angeben:
Die Angabe über die Eingabeaufforderung ist zu empfehlen, wenn der Befehl die folgenden Sonderzeichen enthält:
| & ; < > ( ) { } [ ] nicht ersetztes $
Wenn Sie den Befehl als Parameter in der Befehlszeile angeben, müssen Sie ihn in doppelte Anführungszeichen setzen, wenn er eines oder mehrere der aufgeführten Sonderzeichen enthält.
Anmerkung: | Auf Plattformen unter UNIX wird der Befehl Ihrem Befehlsprotokoll Form hinzugefügt, ganz so als ob Sie ihn in die Eingabeaufforderung eingegeben hätten. |
Alle Sonderzeichen im Befehl können normal eingegeben werden (d. h. ohne Anführungszeichen, außer dem umgekehrten Schrägstrich \). Wenn Sie einen umgekehrten Schrägstrich (\) in Ihrem Befehl benötigen, müssen Sie zwei Schrägstriche eingeben (\\).
Anmerkung: | Wenn auf Plattformen unter UNIX keine Korn-Shell verwendet wird, können alle Sonderzeichen im Befehl normal eingegeben werden (d. h. ohne Anführungszeichen, außer bei den Zeichen " \ nicht ersetztes $ und einfaches Anführungszeichen (')). Wenn Sie eines dieser Zeichen in Ihrem Befehl benötigen, müssen Sie ihnen drei umgekehrte Schrägstriche (\\\) voranstellen. Wenn Sie zum Beispiel einen umgekehrten Schrägstrich (\) in Ihrem Befehl benötigen, müssen Sie vier umgekehrte Schrägstriche (\\\\) eingeben. |
Wenn Sie ein doppeltes Anführungszeichen (") in Ihrem Befehl benötigen, müssen Sie ihm drei umgekehrte Schrägstriche voranstellen. Beispiel: \\\".
Anmerkungen:
Anmerkung: | Die Informationen dieses Abschnitts beziehen sich ausschließlich auf Plattformen, die auf UNIX basieren. |
Der Name der Pufferdatei ist standardmäßig /tmp/$USER/rahout. Er kann aber durch die Umgebungsvariablen $RAHBUFDIR/$RAHBUFNAME definiert werden.
Wenn Sie angeben, daß die Befehle gleichzeitig ausgeführt werden sollen, schaltet diese Prozedur standardmäßig einen weiteren Befehl vor den Befehl, der an alle Hosts gesendet wird, um zu überprüfen, ob die Umgebungsvariablen $RAHBUFDIR und $RAHBUFNAME für die Pufferdatei verwendbar sind. Sie erstellt das Verzeichnis in $RAHBUFDIR definierte Verzeichnis. Sie können dies unterdrücken, indem Sie eine Umgebungsvariable RAHCHECKBUF=no exportieren. Dies dient der Zeitersparnis, wenn Sie bereits wissen, daß das Verzeichnis existiert und verwendbar ist.
Bevor Sie rah verwenden, um einen Befehl gleichzeitig auf mehreren Maschinen auszuführen, ist folgendes sicherzustellen:
rah ")mkdir /tmp/$USER"
export RAHCHECKBUF=no
Anmerkung: | Die Informationen dieses Abschnitts beziehen sich ausschließlich auf Plattformen, die auf UNIX basieren. |
Die Informationsnachrichten werden mit einem Intervall geschrieben, das durch die Umgebungsvariable RAHWAITTIME gesteuert wird. Im Hilfetext finden Sie Einzelheiten zu ihrer Definition. Alle Informationsnachrichten können durch Exportieren von RAHWAITTIME=0 vollständig unterdrückt werden.
Der primäre Überwachungsprozeß ist ein Befehl, dessen Befehlsname (wie vom Befehl ps gezeigt) rahwait>or lautet. Die erste Informationsnachricht teilt Ihnen die pid (Prozeß-ID) dieses Prozesses mit. Alle anderen Überwachungsprozesse erscheinen als ksh-Befehle, die die rah-Prozedur (den Namen der symbolischen Verbindung) ausführen. Falls erwünscht, können Sie alle Überwachungsprozesse durch folgenden Befehl stoppen:
kill <pid>
Dabei ist <pid> die Prozeß-ID des primären Überwachungsprozesses. Geben Sie keine Signalnummer an. Lassen Sie den Standardwert auf 15. Dadurch werden die fernen Befehle in keiner Weise beeinflußt, sondern es wird das automatische Anzeigen der gepufferten Ausgabe verhindert. Beachten Sie, daß es während der Dauer einer einzelnen rah-Ausführung zwei oder mehr verschiedene Gruppen von Überwachungsprozessen geben kann, die zu verschiedenen Zeiten aktiv sind. Wenn Sie zu einem Zeitpunkt die aktuelle Gruppe von Überwachungsprozessen stoppen, werden keine weiteren mehr gestartet.
Wenn Ihre reguläre Anmelde-Shell keine Korn-Shell (z. B. /bin/ksh) ist, können Sie rah verwenden, jedoch gibt es eine Reihe leicht abweichender Regeln für die Eingabe von Befehlen, die die folgenden Sonderzeichen enthalten:
" nicht ersetztes $ '
Weitere Informationen erhalten Sie über die Eingabe von rah "?". Außerdem darf in einer auf UNIX basierenden Umgebung die Anmelde-Shell auf der ID, die die rah-Prozedur ausführt, keine Korn-Shell sein, wenn die Anmelde-Shell auf der ID, die die fernen Befehle ausführt, keine Korn-Shell ist. (rah entscheidet anhand der lokalen ID, ob die Shell der fernen ID eine Korn-Shell ist.) Die Shell darf keinerlei Substitution oder spezielle Verarbeitung an einer Zeichenfolge durchführen, die in einfache Anführungszeichen gesetzt ist. Die Zeichenfolge muß in der Form belassen werden, in der sie vorliegt.
Zur Leistungsverbesserung wurde rah erweitert, um eine Baumstrukturlogik für große Systeme zu verwenden. Das heißt rah überprüft, wie viele Knoten in der Liste enthalten sind, und wenn diese Anzahl einen Schwellenwert überschreitet, erstellt rah eine Teilmenge von der Liste und sendet einen rekursiven Aufruf von sich an diese Knoten. An diesen Knoten wendet das rekursiv aufgerufene rah dieselbe Logik an, bis die Liste so klein ist, daß mit der Standardlogik (nun die Logik "leaf-of-tree") die Befehle an alle Knoten in der Liste versendet werden können. Der Schwellenwert kann mit der Umgebungsvariable RAHTREETHRESH angegeben werden, oder er nimmt standardmäßig den Wert 15 an.
Im Fall eines Systems, bei dem mehrere logische Knoten auf einen physischen Knoten kommen, sendet db2_all den rekursiven Aufruf bevorzugt an bestimmte physische Knoten, die dann rah an die anderen logischen Knoten auf demselben physischen Knoten senden, so daß auch die Übertragungen zwischen den physischen Knoten reduziert werden. (Dies gilt nur für db2_all, nicht rah, da rah immer nur an bestimmte physische Knoten sendet.)
Die Syntax und Semantik dieser rah-Version ist fast mit der Vorgängerversion (die im Produkt als rah.sh_old geliefert wurde) identisch, mit Ausnahme einiger geringer Einschränkungen bei den Optionen:
Anmerkung: | Die Substitutionen () und ## sollten mit der alten Version von rah/db2_all übereinstimmen. |
export RAHTREETHRESH=nn Hierbei kann nn für eine beliebige positive ganze Zahl stehen.
Ansonsten wird der Standardwert 15 angenommen.