Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Inhaltsübersicht

Table of Contents
maxLevel4

Lizenz prüfen


...

Bibliotheken und Verzeichnisse für RPGWX

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

  1. ADDLIBLE DIRWEB
  2. 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

Image Removed

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:

Image Removed

Zur Anzeige aller ausgeführten SQL-Befehle kann man diesen Befehl verwenden:

select log.PRWRTDATE, log.PRINFO, log.*
from  DWPRDIRWP log

where 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

  1. Job-ID des zu loggenden  Jobs ermitteln (z.B. 235242/QTMHHTTP/DIRWDIRWEB)
    1. woppix im Browser starten und das debug-Fenster aktivieren
    2. ein Programm startern, in dem die Job-Angaben angezeigt werden
  2. DB-Monitor starten mit STRDBMON
    1. OUTFILE angeben (hier: QGPL/WPXDBMON)
    2. JOB angeben, damit nur dessen Daten geloggt werden (Ausgabedatei könnte sonst sehr gross werden)
    3. z.B. STRDBMON OUTFILE(QGPL/WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB)
  3. Programme ausführen, für die man sich interessiert
  4. DB-Monitor wieder beenden
    1. z.B. ENDDBMON JOB(235242/QTMHHTTP/DIRWEB)
Code Block
languagesql
titleAlternativen zu den 5250-Befehlen STRDBMON / ENDBMON in SQL
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"

Image Removed

2. Den Reiter "Leistungsüberwachungen" (englich: "Performance monitors") wählen

Image Removed

3. Rechtsklick auf die Datei, die im Befehl STRDBMON, Parameter OUTFILE angegeben war und "Analysieren" (engl. "Analyze")

Image Removed

4. In der Kategorie "Overview" → Error → Error Statements wählen

Image Removed

Gesammelte Daten mit SQL auswerten

Code Block
languagesql
titleSTRDBMON-Logdatei 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

...

Note
iconfalse

Weitere wichtige Hinweise zu den Bibliotheken und Verzeichnissen befinden sich auf der Produkt-Homepage von RPGWX/WOPiXX.


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

  1. ADDLIBLE DIRWEB
  2. 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

Image Added

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:

Image Added

Zur Anzeige aller ausgeführten SQL-Befehle kann man diesen Befehl verwenden:

select log.PRWRTDATE, log.PRINFO, log.*
from  DWPRDIRWP log

where 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

  1. Job-ID des zu loggenden  Jobs ermitteln (z.B. 235242/QTMHHTTP/DIRWDIRWEB)
    1. woppix im Browser starten und das debug-Fenster aktivieren
    2. ein Programm startern, in dem die Job-Angaben angezeigt werden
  2. DB-Monitor starten mit STRDBMON
    1. OUTFILE angeben (hier: QGPL/WPXDBMON)
    2. JOB angeben, damit nur dessen Daten geloggt werden (Ausgabedatei könnte sonst sehr gross werden)
    3. z.B. STRDBMON OUTFILE(QGPL/WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB)
  3. Programme ausführen, für die man sich interessiert
  4. DB-Monitor wieder beenden
    1. z.B. ENDDBMON JOB(235242/QTMHHTTP/DIRWEB)


Code Block
languagesql
titleAlternativen zu den 5250-Befehlen STRDBMON / ENDBMON in SQL
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"

Image Added


2. Den Reiter "Leistungsüberwachungen" (englich: "Performance monitors") wählen

Image Added


3. Rechtsklick auf die Datei, die im Befehl STRDBMON, Parameter OUTFILE angegeben war und "Analysieren" (engl. "Analyze")

Image Added


4. In der Kategorie "Overview" → Error → Error Statements wählen

Image Added



Gesammelte Daten mit SQL auswerten


Code Block
languagesql
titleSTRDBMON-Logdatei 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)

...