DB2 Universal Database - Systemverwaltung


Bestimmung von Fehlern mit rah auf Plattformen unter UNIX

Anmerkung:Die Informationen dieses Abschnitts beziehen sich ausschließlich auf Plattformen, die auf UNIX basieren.
Im folgenden werden Maßnahmen zur Behandlung einiger Fehler diskutiert, die bei der Ausführung von rah eventuell auftreten können:

  1. rah blockiert (oder benötigt sehr lange Zeit)

    Dieses Problem kann folgende Ursache haben:

  2. Sie haben Nachrichten wie die folgenden empfangen:

    Entweder ist auf einer der Maschinen die ID, auf der rah ausgeführt wird, nicht korrekt in der zugehörigen Datei .hosts definiert oder auf der ID, auf der rah ausgeführt wird, ist eine der Maschinen nicht korrekt in der Datei .rhosts definiert.

  3. Obwohl bei der parallelen Ausführung von Befehlen mit rshell-Hintergrundprozessen die Befehle ausgeführt werden und in der erwarteten abgelaufenen Zeit auf den Hosts abgeschlossen werden, braucht rah eine lange Zeit, um dies zu erkennen und die Shell-Eingabeaufforderung anzuzeigen.

    Auf der ID, auf der rah ausgeführt wird, ist eine der Maschinen nicht korrekt in der zugehörigen Datei .rhosts definiert.

  4. rah läuft bei Ausführung über die Shell-Befehlszeile einwandfrei. Aber wenn rah fern mit Hilfe von rsh, zum Beispiel mit folgendem Befehl ausgeführt wird:
      rsh somewher -l $USER db2_kill
    

    wird rah niemals beendet.

    Dies ist normal. rah startet Überwachungsprozesse im Hintergrund, die auch nach der Beendigung weiterhin aktiv sind. Diese Prozesse bleiben in der Regel bestehen, bis alle Prozesse, die zu dem Befehl gehören, den Sie ausgeführt haben, ihrerseits beendet sind. Im Fall von db2_kill bedeutet dies, daß sie bis zur Beendigung aller Datenbankmanager bestehenbleiben. Sie können die Überwachungsprozesse beenden, indem Sie den Prozeß auffinden, dessen Befehl rahwait>or ist, und den Befehl kill <prozeß_id> ausführen. Geben Sie keine Signalnummer an. Verwenden Sie statt dessen den Standardwert (15).

  5. Die Ausgabe von rah wird nicht korrekt angezeigt, oder rah meldet fälschlicherweise, daß $RAHBUFNAME nicht existiert, wenn mehrere Befehle von rah unter derselben Benutzer-ID $RAHUSER abgesetzt wurden.

    Dies kann eintreten, weil mehrere gleichzeitig ablaufende Ausführungen von rah versuchen, dieselbe Pufferdatei (z. B. $RAHBUFDIR/$RAHBUFNAME) zu verwenden. Zur Vermeidung dieses Problems verwenden Sie für jeden gleichzeitig ablaufenden Befehl rah einen unterschiedlichen Namen für $RAHBUFNAME. Im folgenden ist ein ksh-Beispiel aufgeführt:

      export RAHBUFNAME=rahout
      rah ";$befehl_1" &
      export RAHBUFNAME=rah2out
      rah ";$befehl_2" &
    

    Alternativ hierzu können Sie eine Methode verwenden, mit der die Shell automatisch einen eindeutigen Namen auswählt. Beispiel:

      RAHBUFNAME=rahout.$$ db2_all "....."
    

    Unabhängig von der verwendeten Methode müssen Sie sicherstellen, daß die Pufferdateien zu einem bestimmten Zeitpunkt bereinigt werden, wenn der Plattenspeicherplatz begrenzt ist. rah löscht keine Pufferdatei am Ende der Ausführung. Eine vorhandene Pufferdatei wird jedoch beim nächsten Mal gelöscht und wiederverwendet, wenn Sie dieselbe Pufferdatei erneut angeben.

  6. Sie haben folgendes eingegeben:
      rah '"print from ()'
    

    Daraufhin haben Sie die folgende Nachricht empfangen:

      ksh: syntax error at line 1 : (' unexpected
      (ksh: Syntaxfehler in Zeile 1 : (' unerwartet)
    

    Voraussetzungen für die Ersetzung von () und ## sind:

    Zur Verbesserung der Leistung bei der parallelen Ausführung der Befehle sollten Sie | anstelle von |& und || anstelle von ||& oder ; verwenden, es sei denn, die von & bereitgestellte Funktion wird unbedingt benötigt. Durch die Angabe von & werden mehr rsh-Befehle erforderlich und daher die Leistung herabgesetzt.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]