Steuerung einer laufenden entfernten AE
Die AE-Fähigkeit bietet eine SQL-Tabellenfunktion, nzaejobcontrol, die die Ausführung von entfernten AEs steuert. Die Syntax lautet (mit den in der folgenden Tabelle beschriebenen Argumenten):
nzaejobcontrol <operation><dataslice for locus><connection point string
name><remote_name>{TRUE | FALSE}{NULL | 0 | <transaction ID>}{NULL | 0 | <session
ID>}
| Argument | Beschreibung |
|---|---|
| Auszuführende Operation | Zu den Operationen gehören das Anpingen eines entfernten AE, das Anhalten eines entfernten AE, die Rückgabe von Linux über einen entfernten AE und das Senden von Signalen an einen entfernten AE. Es gibt Befehle für den Betrieb an einem bestimmten entfernten AE-Verbindungspunkt und an einer Teilmenge von Verbindungspunkten, einschließlich aller Verbindungspunkte. |
| Dataslice/Locus der entfernten AE (SPUs oder Host) | Dieses Argument wird mit der literalen Ganzzahl Null (0) für den Host oder einer Reihe von nicht-literalen Ganzzahl-Datenscheiben-IDs für die SPU angegeben. Der Satz von Datenscheiben-IDs stammt aus der Systemansicht _v_dual_dslice (oder einer gleichwertigen Ansicht). |
| String-Namensteil der Adresse des Verbindungspunkts | Für einen einzelnen Verbindungspunktbefehl muss dieser Name angegeben werden. Bei einem Befehl für mehrere Verbindungspunkte kann er NULL oder '' (leere Zeichenkette) sein; in diesem Fall gibt er alle Namen an. |
| Boolean (Datenscheiben-ID) | TRUE bedeutet, dass die Datenscheiben-ID in der Verbindungspunktadresse verwendet wird; FALSE bedeutet, dass sie nicht verwendet wird. Bei Befehlen für mehrere Verbindungspunkte muss dieses Argument FALSE sein. |
| Bigint (Transaktions-ID) | NULL bedeutet, dass die Transaktions-ID nicht verwendet werden soll. 0 bedeutet, dass die aktuelle Transaktions-ID-Funktion verwendet wird, in der die Tabellenfunktion nzaejobcontrol aufgerufen wurde; größer als 0 bedeutet, dass die angegebene Transaktions-ID verwendet wird. |
| Bigint (Sitzungs-ID) | NULL bedeutet, dass die Sitzungs-ID nicht verwendet werden soll. 0 bedeutet, dass die aktuelle Sitzungs-ID verwendet wird, in der die Tabellenfunktion nzaejobcontrol aufgerufen wurde; größer als 0 bedeutet, dass die angegebene Sitzungs-ID verwendet wird. |
Einzelne Verbindungspunktbefehle
Einzelne Verbindungspunktbefehle wirken auf genau einen Verbindungspunkt, der aus mehreren Prozessen auf mehreren Rechnern bestehen kann. Dies sind die Befehlsnamen, die im Operationsargument von ' nzaejobcontrol. verwendet werden können
- ping - Sendeteine kurze Nachricht an einen Verbindungspunkt, um festzustellen, ob dieser aktiv ist und antwortet. Es liefert Daten für alle unten aufgeführten Ausgabespalten. (Siehe Tabelle Funktion Ausgabespalten.)
- ps-Gibt Prozessinformationen über eine entfernte AE zurück, die an einem Verbindungspunkt lauscht. Dieser Befehl kann auch dann ausgeführt werden, wenn die AE am Verbindungspunkt nicht antwortet. Sie liefert Daten für alle Ausgabespalten, die keine direkte Kommunikation mit der entfernten ZB erfordern.
- stop - Stoppteine entfernte AE, die an einem Verbindungspunkt lauscht. Wenn der entfernte AE-Prozess nicht auf die Nachricht antwortet, erhält der entfernte AE-Prozess ein SIGKILL-Signal.
- status-Gibt Statusinformationen von einer entfernten ZB zurück, die an einem Verbindungspunkt lauscht. Durch die Erstellung einer Callback-Routine für entfernte AE-Nachrichten kann eine entfernte AE-Anwendung ihre eigene benutzerdefinierte Nachricht und ihren eigenen Rückgabecode zurückgeben. Bestimmte Linux können an entfernte AEs gesendet werden. Das gesendete Signal wird im Feld " betrieb der Tabellenfunktion nzaejobcontrol mit den Befehlenighup, sigint, sigkill, ' sigusr1, ' sigusr2, sigterm, sigcont, und " sigstop. angegeben
- clean - Löschttemporäre Synchronisationsdateien auf den SPUs. Dieser Befehl wird verwendet, nachdem der Stopp-Befehl ausgeführt wurde. Der benötigte Speicherplatz ist in der Regel unbedeutend, es sei denn, es werden viele verschiedene Verbindungspunktnamen unter Verwendung der Sitzungs- und Transaktions-ID erstellt.
Befehle für mehrere Verbindungspunkte
Die Einzelverbindungspunktbefehle wirken auf genau einen Verbindungspunkt, der von mehreren Prozessen auf den SPUs verwendet werden kann. Mit Ausnahme des Befehls clean haben alle Befehle der Tabellenfunktion nzaejobcontrol eine entsprechende Version für mehrere Verbindungspunkte.
Bei diesen Befehlen dienen die Argumente für den Verbindungspunkt der Tabellenfunktion nzaejobcontrol als Auswahlfilter. Wird z. B. als Remote-Name NULL oder '' (leere Zeichenkette) angegeben, arbeitet der Befehl mit Verbindungspunkten mit allen Namen. Es ist daher möglich, einen Befehl an alle entfernten ZB oder eine Gruppe von entfernten ZB zu senden, z. B. an alle entfernten ZB, die einen mit einer bestimmten Sitzungs-ID erstellten Verbindungspunkt verwenden.
Zu diesen Befehlen gehören ' pingall, stopall, psall, statusall, sighupall, sigintall, sigkillall, sigusr1all, sigusr2all, sigtermall, sigcontall, sigstopall. Diese Befehle funktionieren ähnlich wie die Version für einen einzelnen Verbindungspunkt, jedoch für mehrere AEs.
Tabelle Funktion Ausgangsspalten
Wenn Sie die Funktion nzaejobcontrol in der INZA-Datenbank direkt in SQL verwenden, sollte die ausgewählte Spalte aeresult sein. Die Funktion nzaejobcontrol kann auch von einem GUI-Programm mit SQL verwendet werden; daher werden die Informationen auch in einzelnen Spalten zurückgegeben. Nicht alle Befehle setzen alle Rückgabespalten. Die Tabellenfunktion nzaejobcontrol gibt bei mehreren Zeilen Null zurück.
| Spalte | Beschreibung |
|---|---|
| aeresult | Statusnachricht |
| aerc | Rückgabecode für den Befehl: 0 = Erfolg, -1 = Fehler, +1 = Stopp erfolglos, aber nachfolgendes Kill-Signal erfolgreich |
| aetotal | Gesamtzahl der für den Befehl zurückgegebenen Zeilen, wiederholt in jeder Zeile |
| aename | Name der Verbindungsstelle |
| AED-Scheibe | Verbindungspunkt Datenscheibe ID |
| aesession | Verbindungspunkt Session ID |
| aetrans | Verbindungspunkt Transaktions-ID |
| aehostname | Hostname, auf dem der AE-Prozess läuft |
| aepid | Linux der entfernten AE |
| aecommand | AE-Befehlszeile |
| aetid | Linux, unter der der Verbindungspunkt abgehört wird |
| aebuild | Die AE-Build-Nummer der entfernten AE |
| aenzrepver | Die nzrep-Version, die die entfernte AE verwendet |
| aenzrepver | Bei TRUE stimmt die AE-Build-Nummer oder die nzrep-Version der entfernten AE nicht mit der aktuellen des NPS-Systemkits überein, andernfalls FALSE. |
Host-Beispiele
Die folgenden Beispiele zeigen, wie einzelne Befehle auf dem Host funktionieren. (Sie gehen davon aus, dass eine AE namens my_remote_ae existiert und aufgerufen werden kann)
- Pingen Sie eine entfernte AE an, die keine Datenscheiben-ID im Verbindungspunkt verwendet:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('ping', 0, 'my_remote_ae', false, NULL, NULL)); - Pingen Sie eine entfernte AE unter Verwendung der Datenscheiben-ID im Verbindungspunkt an:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('ping', 0, 'my_remote_ae', true, NULL, NULL)); - Pingen Sie alle entfernten AEs an:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL, false, NULL, NULL)); - Pingen Sie alle entfernten AEs mit einem Verbindungspunkt mit Sitzungs-ID = 1000 an:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL, false, NULL, 1000));
SPU-Beispiele
Die folgenden Beispiele zeigen, wie einzelne Befehle auf einer SPU funktionieren. (Sie gehen davon aus, dass eine AE namens my_remote_ae existiert und aufgerufen werden kann)
- Pingen Sie eine entfernte AE an, die eine Instanz pro SPU hat:
SELECT aeresult FROM _v_dual_dslice, TABLE WITH final(inza..nzaejobcontrol('ping', dsid, 'my_remote_ae', false, NULL, NULL)); - Pingen Sie eine entfernte AE an, die eine Instanz pro Dataslice hat:
SELECT aeresult FROM _v_dual_dslice, TABLE WITH final(inza..nzaejobcontrol('ping', dsid, 'my_remote_ae', true, NULL, NULL)); - Pingen Sie alle entfernten AEs an:
SELECT aeresult FROM _v_dual_dslice, TABLE WITH final(inza..nzaejobcontrol('pingall', dsid, NULL, false, NULL, NULL)); - Pingen Sie alle entfernten AEs mit einem Verbindungspunkt mit Sitzungs-ID = 1000 an:
SELECT aeresult FROM _v_dual_dslice, TABLE WITH final(inza..nzaejobcontrol('pingall', dsid, NULL, false, NULL, 1000));
Einspaltige Beispiele auf dem Host mit Ausgabe
Die folgende Abbildung zeigt die Ergebnisse eines Pings für alle entfernten AEs auf dem Host in verschiedenen Spalten:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AERESULT
-----------------------------------------------------------------------------
netezzahost 24872 (datamatrix dataslc:-1 sess:-1 trans:-1) thread: 24873 AE
Build: 10 nzrep version: 9
netezzahost 30264 (testcapi dataslc:-1 sess:-1 trans:-1) thread: 30264 AE Build:
10 nzrep version: 9
SELECT aerc FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL, false,
NULL, NULL));
AERC
------
0
0
SELECT aetotal FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AETOTAL
---------
2
2
SELECT aename FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AENAME
------------
datamatrix
testcapi
SELECT aedslice FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AEDSLICE
----------
-1
-1
SELECT aesession FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AESESSION
-----------
-1
-1
SELECT aetrans FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AETRANS
---------
-1
-1
SELECT aehostname FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AEHOSTNAME
--------------
netezzahost
netezzahost
SELECT aepid FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AEPID
-------
24872
30264
SELECT aecommand FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AECOMMAND
----------------------------------------------------------
/nz/export/ae/languages/java/6.13.0/jdk1.6.0_13/bin/java
/nz/export/ae/aebin/host/testcapi
SELECT aetid FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AETID
-------
24873
30264
SELECT aebuild FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AEBUILD
---------
10
10
SELECT aenzrepver FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));
AENZREPVER
------------
9
9
SELECT aevermismatch FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0,
NULL, false, NULL, NULL));
AEVERMISMATCH
---------------
f
f