Natural for Db2 bietet die Möglichkeit, die Abläufe aller dynamisch ausgeführten SQL-Statements innerhalb einer Maschine (LPAR) zu verfolgen. Mit der Trace-Funktion können Sie das Natural-Programm ermitteln, von dem die dynamische SQL-Anfrage ausgeht.
Wenn das Tracing mit dem Schlüsselwort-Subparameter DYSQLTR aktiviert ist,
werden alle dynamisch ausgeführten SQL-Statements in einem Shared-Memory-Objekt oberhalb
der Grenze aufgezeichnet. Der Name dieses Shared-Memory-Objekts wird mit dem
Schlüsselwort-Subparameter DSTNAME im Parameter-Makro
NTDB2 angegeben. Die erste Natural for Db2-Sitzung in einer LPAR
legt das Shared-Memory-Objekt an und verbindet ihren Adressraum oder ihre Region mit dem
Shared-Memory-Objekt. Die nachfolgenden Natural for Db2-Sitzungen mit denselben
DSTNAME- und
DYSQLTR-Parametereinstellungen in einer LPAR werden ebenfalls an
das Shared-Memory-Objekt angehängt, wenn der Adressraum nicht bereits an das
Shared-Memory-Objekt angehängt ist.
Für jedes dynamisch ausgeführte SQL-Statement schreibt die Natural for Db2-Sitzung einen Trace-Eintrag in den Puffer, bevor sie Db2 aufruft, und einen Trace-Eintrag nach der Rückkehr von Db2.
Jeder Trace-Eintrag enthält die folgenden Daten:
Datum und Uhrzeit.
Natural-Bibliothek, Programmname und Zeilennummer.
Benutzername, Terminalname, Jobname und Jobnummer.
den Db2 DBRM-Namen (NDBIOxxx), die
Db2-Abschnittsnummer, die Statement-Nummer und den Statement-Typ (OPEN,
FETCH, CLOSE usw.).
Die Db2 SQLCODE-Rückgabeinformationen.
Sie können das dynamische SQL-Tracing starten und beenden und die Trace-Daten im
Shared-Memory-Objekt mit dem Natural-Subprogramm NDBDST00 abrufen. Wenn der
Trace-Puffer bis zum oberen Ende gefüllt ist, wird das Tracing durch Überschreiben des
Inhalts am unteren Ende des Puffers fortgesetzt.
Standardmäßig nimmt die Natural for Db2-Sitzung nicht am dynamischen SQL-Tracing teil. Um
das dynamische SQL-Tracing für eine Natural for Db2-Sitzung zu aktivieren, müssen Sie den
Schlüsselwort-Subparameter DYSQLTR=ON im NTDB2-Makro im
Natural-Parametermodul setzen. Außerdem müssen Sie mit dem Schlüsselwort-Subparameter
DSTNAME einen
Namen für das Shared-Memory-Objekt angeben, in dem alle dynamisch ausgeführten
SQL-Statements aufgezeichnet werden sollen. Der Standardname ist NDBRDC01.
Einzelheiten zur Syntax des NTDB2-Makros finden Sie unter DB2 - Parameter für
SQL-Datenbankmanagementsystem-Schnittstellen in der
Parameter-Referenz-Dokumentation.
Nachdem das Tracing aktiviert wurde, verbindet sich die Natural for Db2-Sitzung mit dem
Shared-Memory-Objekt. Wenn dieses Shared-Memory-Objekt noch nicht existiert, erstellt die
Natural for Db2-Sitzung das in DSTNAME angegebene Shared-Memory-Objekt und bindet
die Natural-Sitzung daran an. Zu diesem Zweck ruft die Sitzung den Authorized Services Manager (ASM) auf,
der mit der SUBSID des Natural-Subsystems verbunden ist. Die Sitzung sucht in
den FSSMDSTx-Karten des
ASM nach dem Namen und der Größe des Shared Memory-Objekts. Deshalb müssen Sie die Größe
des Shared-Memory-Objekts und die Art des Tracing in der Parameterdatei ASMPARM
festlegen. Innerhalb dieser Parameterdatei geben Sie den Parameter
FSSMDSTx wie folgt an:
FSSMDSTx=(name,n,tracetype,[T])
FSSMDSTx zeigt an, dass es sich um
eine Parameterkarte für den Trace-Puffer des Shared-Memory-Objekts handelt.
x ist frei wählbar.
name gibt den Namen des gemeinsamen
Speicherobjekts an.
n bezeichnet die Größe des gemeinsam
genutzten Speicherobjekts in Megabytes.
tracetype bestimmt, welche Trace-Sätze in den
Trace-Puffer geschrieben werden. Mögliche Werte:
S - Trace-Sätze vor und nach einem Db2-Aufruf schreiben.
B - Trace-Sätze vor einem Db2-Aufruf schreiben.
A - Trace-Sätze nach einem Db2-Aufruf schreiben.
T - keine Trace-Sätze schreiben.
T ist ein optionales Attribut, das anfordert, dass die Create- und
Attach-Anforderungen im Job-Log protokolliert werden.
Das folgende Beispiel definiert ein Shared-Memory-Objekt namens NDBDST01 mit
einer Größe von 10 MB und Tracing vor und nach einem Db2-Aufruf:
SUBSID=NDB1 MSGCASE=M FSSMDST1=(NDBDST01,10,S)
Nachdem Sie das Tracing eingerichtet haben, können Sie die verfügbaren Natural-Objekte verwenden, um das Tracing zu starten, Tracing-Daten abzurufen und das Tracing zu beenden.
Natural bietet die folgenden Objekte, mit denen Sie das Tracing starten, Tracing-Daten abrufen und das Tracing beenden können:
NDBDST00 - Tracing starten, Datensätze abrufen, Tracing beenden
NDBDST_L - Beschreibung der abgerufenen dynamischen SQL- Trace-Daten
NDBDSTPF - Lesen von Trace-Einträgen vom Ältesten zum Neuesten
NDBDSTPL - Lesen von Trace-Einträgen vom Neuesten zum Ältesten
Diese Programme arbeiten mit dem Shared-Memory-Puffer, der mit dem
Schlüsselwort-Subparameter DSTNAME im Makro NTDB2 im
Modul NATPARM oder mit dem Schlüsselwort-Subparameter des
DB2-Profilparameters DB2=(DSTANAM=) angegeben wird.
Um diese Programme zu verwenden, müssen Sie auch den Schlüsselwort-Subparameter DYSQLTR=ON angeben.
Das Natural-Subprogramm NDBDST00 startet das dynamische SQL-Tracing, ruft
die dynamischen SQL-Trace-Daten ab und beendet das Tracing. Verwenden Sie die folgende
Syntax im aufrufenden Natural-Programm:
CALLNAT 'NDBDST00' #FUNCTION #RETCODE #KTXT #GDATA #LDATA #TRACESTATE
Die Syntax dieses Programms enthält die folgenden Parameter:
| Parameter | Format/Länge | Beschreibung |
|---|---|---|
#FUNCTION |
A1 |
Funktionscode für die Eingabe. Mögliche Werte:
|
#RETCODE |
I4 |
Rückgabecode. Mögliche Werte:
|
#KTXT |
B48 |
Bei Aufrufen verwendeter Kontext. Der Aufrufer darf diesen Parameter nicht ändern. |
#GDATA |
A252 |
Enthält dynamische SQL-Trace-Daten mit Bezug auf das Natural-Programm, das Db2 aufruft. Siehe NDBDST-L. |
#LDATA |
A252 |
Enthält dynamische SQL-Trace-Daten über den Zugriff auf Db2. Siehe NDBDST-L. |
#TRACESTATE |
A1 |
Der aktuelle Status des dynamischen SQL-Trace. Mögliche Werte:
|
Der lokale Datenbereich NDBDSTPF enthält die Beschreibung der abgerufenen
dynamischen SQL-Trace-Daten. Er ist in zwei Gruppen unterteilt: GDATA und
LDATA. GDATA umfasst die Daten im Zusammenhang mit dem
Natural-Programm, das Db2 aufruft, und LDATA umfasst die Daten im
Zusammenhang mit dem Zugriff auf Db2.
| Name | Format/Länge | Beschreibung |
|---|---|---|
| GBASP | A8 | Basisproduktkennung (NATURAL) |
| GVER | A4 | Version der Basisproduktkennung (9202) |
| GOPS | A8 | Name des Betriebssystems (MVS/ESA) |
| GTPM | A8 | TP-Monitor-Name (CICS, IMS/DC) |
| GTERM | A8 | TP-Terminalkennung |
| GIUID | A8 | Benutzerkennung zu Beginn |
| GCUID | A8 | Aktuelle Benutzerkennung |
| GCAPL | A8 | Aktuelle LOGON-Library |
| GGRP | A8 | Aktuelle LOGON-Gruppenkennung |
| GPGM | A8 | Aktuelles Programm |
| GLINE | N4 | Aktuelle Statement-Nummer |
| GLEV | I1 | Aktuelle Programmebene |
| Name | Format/Länge | Beschreibung |
|---|---|---|
| TDB2FUNC | A4 | BDb2 vor Db2, ADb2 nach Db2 Aufruf |
| TDB2TIST | B8 | Lokale Store Clock-Zeit |
| TDB2DBRM | A8 | DBRM-Name (UTF-8) |
| TDB2CONT | B8 | Db2 Consistency Token |
| TDB2SQLC | I4 | SQLCODE |
| TDB2STYPE | I2 | Db2-Statement-Typ |
| TDB2SECT | I2 | Db2-Abschnittsnummer |
| TDB2STNR | I4 | Db2-Statement-Nummer |
| TDB2JNAM | A8 | Jobname des Anfragenden |
| TDB2JNO | A8 | Jobnummer des Anfragenden |
| TDB2HOLD | A2 | Cursor WITH HOLD (NO, HO) |
| TDB2SCRL | A2 | SCROLL Type (NO, AS, IN, SD, SS) |
| TDB2RETU | A2 | Cursor WITH RETURN (NO, RT) |
| TDB2ROWP | A2 | Cursor WITH ROWSET-Verarbeitung (NO, RP) |
| TDB2FECO | A2 | FETCH-Fortsetzungstyp (NO, CC, CO) |
| TDB2MFC | I2 | Multi Fetch-Zähler |
| TDB2MODE | A1 | Dynamic (D) |
Das Subprogramm NDBDSTPA Natural startet das Schreiben von Trace-Sätzen
für eine Natural for Db2-Sitzung erst nach einem Db2-Aufrufeintrag.
Das Subprogramm NDBDSTPB Natural startet das Schreiben von Trace-Sätzen
für eine Natural for Db2-Sitzung erst vor einem Db2-Aufrufeintrag.
Das Beispielprogramm NDBDSTPF zeigt den sequenziellen Abruf von
Trace-Einträgen, beginnend mit dem ältesten Trace-Eintrag und endend mit dem neuesten
Trace-Eintrag.
Sie können dieses Programm als Vorlage verwenden, um Ihre eigenen Trace-Abfrageprogramme zu erstellen und die Ausgabe an Ihre Bedürfnisse anzupassen.
Das Beispielprogramm NDBDSTPL zeigt den sequenziellen Abruf von
Trace-Einträgen, beginnend mit dem neuesten Trace-Eintrag und endend mit dem ältesten
Trace-Eintrag.
Sie können dieses Programm als Vorlage verwenden, um Ihre eigenen Trace-Abfrageprogramme zu erstellen und die Ausgabe an Ihre Bedürfnisse anzupassen.
Das Natural-Subprogramm NDBDSTPR setzt den dynamischen SQL-Trace-Puffer
auf seinen Ausgangszustand zurück. Alle Trace-Einträge gehen dabei verloren.
Das Natural-Subprogramm NDBDSTPS startet das Schreiben von Trace-Sätzen
für eine Natural for Db2-Sitzung sowohl vor als auch nach einem Db2-Aufrufeintrag.
Das Natural-Subprogramm NDBDSTPT zeigt die Beendigung des Trace.