Toolmaker Produkt-Dokumentation
RPGWX - Fehlersuche und -behebung
Inhaltsübersicht
Lizenz prüfen
Bibliotheken und Verzeichnisse für RPGWX
Bibliotheken
- DIRWEB
- DIRWEBCGI
- WOPIX
IFS-Verzeichnisse
- /Toolmaker/
- DirectWeb
- IBM_I
- weitere, wenn weitere WOPiXX-Anwendungen installiert sind, z.B. "DirectMail400" oder "DirectArchive", etc.
- /www/dirweb
Fehlersuche und -behebung auf IBM i
Version feststellen
IBM i-Version
GO LICPGM
, Auswahl 10, Taste F11
RPGWX Version
WRKLIB DIRWEB
- in der Beschreibung steht die Versionsnummer
DSPDTAARA DIRWEB/prdrel
Die Versions-Nr. ist auch in der Tabelle DWWEBAPP
(Bibliothek DIRWEB) in den Spalten APVERS, APVERSREL und APVERSPTF hinterlegt. Daten-Bereich und Einträge in der Tabelle DWWEBAPP
werden beide aktualisiert und gegeneinander abgeglichen.
Befehle zur Konfiguration
ADDLIBLE DIRWEB
CFGDIRWEB
Wenn nötig, dann können Sie SSL im Betriebssystem IBM i aktivieren. Folgen Sie dafür den Schritten auf der Seite HTTPS-Konfiguration (z.B. für RPGWX).
Start/Stop -Befehle
ADDLIBLE DIRWEB
STRRPGWX oder ENDRPGWX
Sofern man die Befehle mit dem CL-Befehl CRTDUPOBJ
in die Bibliothek QGPL
kopiert (was auf unseren Systemen, zumindest auf der PWRDIST und PW8BHA erfolgt ist), können beide Befehle ausgeführt werden, ohne dass zuvor die Bibliothek DIRWEB
explizit in die Bibliotheksliste aufgenommen wurde.
Subsystem und Jobs
Damit RPGWX arbeiten kann werden einige Dienste des HTTP-Servers auf der IBM i benötigt. Diese Dienste laufen im Subsystem QHTTPSVR als eigene Instanz mit dem Namen DIRWEB. Hierfür müssen jedoch Name und Port des Servers (der IBM i) im Green-Screen gesetzt und die Instanz DIRWEB gestartet werden.
WRKSBSJOB QHTTPSVR
Für die Fehlersuche interessant sind alle Jobs, die den Namen DIRWEB tragen und als Funktion PGM-QZSRCGI.
Welcher Job eine einzelne Browser-Sitzung bedient kann man sehen, wenn man sich den Seitenquelltext anzeigen lässt (ggf. den vom Frame). In der Seitenquelle finden sich dann diese Angaben:
var curjob = "DIRWEB";
var curusr = "QTMHHTTP";
var curjobnr = "197815";
Diese kann man im Befehl WRKJOB verwenden, um genau den Job zu finden, der die Sitzung bedient.
Sofern man in der Anzeige das Debug-Fenster aktiviert hat, kann der qualifizierte Job direkt aus den Header-Informationen (System-Job) ausgelesen werden.
Logs/Protokolle/Dumps
Protokollierung ein und ausschalten (im Browser)
Wenn RPGWX im Browser funktioniert dann geht das mit RPGWX → Einstellungen → Protokollierung
In der Spalte Protokoll-Datei sieht man, welche Datei mit abgefragt werden muss, um die entsprechende Log-Information zu sehen.
Protokollierung ein und ausschalten (im Green-Screen)
Die Steuerdatei für die oben beschriebenen Dateien heisst DIRWEB/DWACTLOGP. Für jede Protokolldatei gibt es einen Datensatz in der DWACTLOGP.
Das Feld ACACT steuert, ob die Protokolldatei geschrieben wird oder nicht: 1=Ja, 0=Nein
Protokoll-Dateien in Bibliothek DIRWEB
Für alle SQL-Befehle gilt:
- wenn man sie in einem IBM i - Green Screen im STRSQL-Bildschirm eingibt, dann muss man die Bibliothek DIRWEB
- entweder bereits vor dem Aufruf von STRSQL in die Bibliotheksliste geschrieben haben
- oder man gibt sie qualifiziert an, im dem man die Bibliothek DIRWEB dem Objekt voranstellt. Bibliothek und Objekt können wahlweise mit einem Querstrich ( / ) oder einem Punkt ( . ) getrennt werden, also
DIRWEB/DWSESSQL oder DIRWEB.DWSESSQL
.
- wenn man sie in einem graphischen SQL-Tool (z.B. ACS oder SQuirreL) eingibt, das standardmäßig mit SQL Namenskonventionen arbeiteat, dann ist der Questrich als Qualifikationskennzeichen nicht zulässig. Das Trennzeichen ist in diesem Fall immer der Punkt:
DIRWEB.DWSESSQL
.
DWSESSQL - SQL-Befehle, die verarbeitet wurden
select * from DIRWEB.DWSESSQL
order by SQCHGDATE desc
Zusätzlich kann man noch über Where-Bedingungen die Anzahl der Daten-Sätze auf eine bestimmte Session-Id einschränken.
select * from DIRWEB.DWSESSQL where SQID = 'ByLPwjA9PKVptezeaW8lbg=='
Nur die Befehle in ihrer Reihenfolge für eine bestimmte Sitzung:
select SQRCDS, time(SQWRTDATE), SQCMD
from DIRWEB.DWSESSQL
where SQID like '%jzchc%'
order by SQID, SQCHGDATE desc
DWPRDIRWP - verschiedene Log-Funktionen - hier: von den Anwendungen durchgeführte SQL-Befehle
Die DWSESSQL (s.o.) zeigt alle SQL-Befehle, die von RPGWX selbst gerufen werden. Befehle, die in den Anwendungen programmiert wurden, erscheinen nicht.
Wenn aber bei den Logs "SQLINFO" aktiviert ist, dann werden alle SQL-Befehle geloggt, und zwar in der DWPRDIRWP:
Zur Anzeige aller ausgeführten SQL-Befehle kann man diesen Befehl verwenden:
select log.PRWRTDATE, log.PRINFO, log.*
from DWPRDIRWP logwhere PRINFO like '%SQL Command:%'
order by PRWRTDATE desc;
DWWEBSES - Sitzungen
Eine Liste der Sitzungen mit ihren angemeldeten Benutzern anzeigen:
select B.SUUSR, A.*
FROM DWWEBSES A
left join DWWEBUSR B
on A.SEUID = B.SUID
ORDER BY SELST desc
Protokolldateien im IFS
/www/dirweb/logs/error_log.Qxxxxxx
STRDBMON - SQL-Befehle loggen
Der DB-Monitor loggt - wenn eingeschaltet - sämtliche SQL-Befehle. Man kann ihn auf einen einzelnen Job eingrenzen oder über das gesamte System arbeiten lassen.
Zunächst wird mit dem Befehl STRDBMON
das Daten-Sammeln eingeschaltet. Nachdem die fragliche Funktion ausgeführt wurde kann man ihn mit ENDDBMON
wieder abschalten.
Die Daten werden in eine Datei geschrieben, die man im STRDBMON
angibt und die man mit einem SELECT-Befehl auswerten kannn.
Daten sammeln
- Job-ID des zu loggenden Jobs ermitteln (z.B. 235242/QTMHHTTP/DIRWDIRWEB)
- woppix im Browser starten und das debug-Fenster aktivieren
- ein Programm startern, in dem die Job-Angaben angezeigt werden
- DB-Monitor starten mit STRDBMON
- OUTFILE angeben (hier: QGPL/WPXDBMON)
- JOB angeben, damit nur dessen Daten geloggt werden (Ausgabedatei könnte sonst sehr gross werden)
- z.B.
STRDBMON OUTFILE(QGPL/WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB)
- Programme ausführen, für die man sich interessiert
- DB-Monitor wieder beenden
- z.B.
ENDDBMON JOB(235242/QTMHHTTP/DIRWEB)
- z.B.
CL:STRDBMON OUTFILE(QGPL.WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB) ; CL:ENDDBMON JOB(235242/QTMHHTTP/DIRWEB) ;
Gesammelte Daten mit dem ACS Database Monitor auswerten
1. Im Startmenü von IBM i Access - Client Solutions (ACS) Doppelklicke auf "SQL Performance Center"
2. Den Reiter "Leistungsüberwachungen" (englich: "Performance monitors") wählen
3. Rechtsklick auf die Datei, die im Befehl STRDBMON, Parameter OUTFILE angegeben war und "Analysieren" (engl. "Analyze")
4. In der Kategorie "Overview" → Error → Error Statements wählen
Gesammelte Daten mit SQL auswerten
-- Auswahl aller SQL-Befehle, die länger als 1 Millisekunde benötigten (QQI4 > 1) select QQI4 as Millisec, QQI6 as Microsec, QQTIME , QQSTN , QQSTIM as Starttime , QQETIM as Endtime , QQC103 , QQC104 , QQ1000, QVC1282 from QGPL/WPXDBMON a where QQI4 > 1 and QQC103 <> 'QAQQINI' order by QQETIM desc;
Weitere Hinweise zu den Feldern in der DB-Monitor-Ausgabedatei:https://www.ibm.com/docs/en/i/7.3?topic=formats-sql-table
Fehlersuche und -behebung auf dem Browser
Cache löschen
- Firefox: STRG+F5
Support-Fälle
Kein Login-Fenster auf dem Browser, anstattdessen "Interner Server-Fehler"
Für diesen Fehler gibt es verschiedene Ursachen, hier sind einige aufgelistet:
Fehlendes Verzeichnis "/Toolmaker/DirectWeb" (2218)
Die folgenden IFS-Verzeichnisse müssen installiert sein:
/www/dirweb
/Toolmaker/DirectWeb
/Toolmaker/IBM_I
Wenn eines davon fehlt, bitte die Hotline kontaktieren.
Fehlermeldung: "Zeile für SELECT nicht gefunden. Error calling <programmname>" im Browser (18030182)
Der Fehler trat in diesem Fall in einem CHG-Programm auf.
Im Joblog des CGI-Jobs fand sich die Fehlermeldung
CCPF9897 – „Zeile für SELECT nicht gefunden“
Von DWSNDPGMSG
An DWFILINF, Prozedur DW_GETSQLNAMEFORTABLE
…wird über mehrere Stufen weitergereicht an <programmname>, Anweisung 12400
An Zeile 124 im Pgm <programmname> befindet sich dieser Befehl:
Wx_ChgFile('CONTLF01');
Wx_ChgFile('CONTPF');
verschwand der Fehler.
Datenfehler X'1F' führt zu Fehlern bei RPGWX-WRK-Programmen
Bei dieser Fehlersituation ist eine mögliche Ursache, dass ungültige Zeichen (X‘1F‘) in einem Feld in der Datei dazu führen, dass nicht alle oder sogar gar keine Sätze angezeigt werden. Es handelt sich mit ziemlicher Sicherheit um Textfelder, die in der WRK-Anzeige angezeigt werden sollten.
Zum Prüfen, ob ein Feld "FIELD" in einem oder mehreren Sätzen dieses Problem hat, kann man den folgenden SQL-Befehl verwenden:
select FIELD , a.* from LIB/FILE as a where posstr(FIELD , X'1F') > 0
Es werden alle Sätze angezeigt, die im Datenfeld FIELD ein Zeichen mit dem Inhalt HEX „1F“ enthalten.
Mit dem folgenden SQL-Befehl kann in dem Datenfeld „FIELD“ das fehlerhafte Zeichen hex „1F“ auf „Blank“ gesetzt werden (falls gewünscht):
update LIB/FILE set FIELD = REPLACE(FIELD , X'1F' , ' ') where posstr(FIELD , X'1F') > 0
Zur Zeit bietet Toolmaker bietet kein Tool, mit dem dieser Vorgang automatisiert bearbeitet werden kann.
Fehlermeldung beim Versuch, sich anzumelden: "Zu viele ungültige Anmeldeversuche. IP xxx.xxx.xxx.xxx ist gesperrt"
Es wurde zu häufig versucht, sich mit falschen Anmeldeinformationen von einem PC mit einer bestimmten IP-Adresse anzumelden.
In diesem Fall wird die Adresse von RPGWX für eine bestimmte Zeit gesperrt. In dieser Zeit ist kein Anmelden von diesem PC möglich. Nach Ablauf der Sperrfrist, kann man sich wieder normal anmelden.
Die Zeit, in der eine IP-Adresse blockiert wird, wird in RPGWX → Einstellungen → Grundeinstellungen, Reiter "Allgemein" festgelegt. Das Feld ist "IP Adresse sperren".
Fehlermeldung im Browser: ERR_CERT_AUTHORITY_INVALID
Problem
Der Browser zeigt eine Fehlermeldung beim Aufrufen von RPGWX. Man kann den Fehler umgehen, er kehrt jedoch immer wieder.
Lösung
Es handelt sich hier um eine SSL-Verbindung mit einem selbsterstellen Zertifikat.
Dem Browser muss "mitgeteilt" werden, dass die Stelle, die dieses Zertifikat ausgestellt hat (also die eigene IBM i) "vertrauenswürdig" ist.
Folgen Sie hierzu den Schritten, die auf der Seite IBM i - wichtige Informationen rund um das Betriebssystem - Das CA-Zertifikat auf den Benutzer PCs unter "Vertrauenswürdige Stammzertifizierungsstellen" installieren.
Fehlermeldung im Browser: ERR_CERT_COMMON_NAME_INVALID
Problem
Es wurde ein Zertifkat erstellt, das nicht "passt".
Das Zertifikat für den IBM i - HTML-Server muss korrekt erstellt werden.
Folgen Sie hierzu den Schritten, die auf der Seite IBM i - wichtige Informationen rund um das Betriebssystem - Ein Anwendungs-Zertifikat für den HTML-Server erstellen und zuordnen