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.