Tracing von dynamischen SQL-Statements

#### Search Results

Search

# Tracing von dynamischen SQL-Statements

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.

- Arbeitsweise des Tracing

- Tracing für dynamische SQL-Statements aktivieren

- Dynamische SQL-Statements tracen

## Arbeitsweise des Tracing

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.

## Tracing für dynamische SQL-Statements aktivieren

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.

## Dynamische SQL-Statements tracen

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

- NDBDSTPA - Schreiben von Trace-Sätzen nach einem Db2-Aufruf

- NDBDSTPB - Schreiben von Trace-Sätzen vor einem Db2-Aufruf

- NDBDSTPF - Lesen von Trace-Einträgen vom Ältesten zum Neuesten

- NDBDSTPL - Lesen von Trace-Einträgen vom Neuesten zum Ältesten

- NDBDSTPR - Zurücksetzen des Trace-Puffers

- NDBDSTPS - Tracing neu starten

- NDBDSTPT - Tracing beenden

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.

### NDBDST00 - Tracing starten, Datensätze abrufen, Tracing beenden

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: `A` - Startet den Trace nachdem Db2-Aufruf-Trace-Einträge geschrieben wurden. `B` - Startet den Trace bevor Db2-Call-Trace-Einträge geschrieben werden. `F` - Ruft den ersten/ältesten Trace-Eintrag ab. `L` - Ruft den letzten/neuesten Trace-Eintrag ab. `N` - Ruft den nächsten/neueren Trace-Eintrag ab. `P` - Ruft den vorherigen/älteren Trace-Eintrag ab. `R` - Setzt den Trace-Puffer zurück. Der dynamische SQL-Trace-Puffer wird so behandelt, als würde er zum ersten Mal initialisiert. `S` - Startet das Tracing. `T` - Beendet das Tracing.
`#RETCODE` | I4 | Rückgabecode. Mögliche Werte: `0` - In Ordnung. `4` - Ende der Daten. Es sind keine weiteren Trace-Einträge vorhanden. `8` - Unzureichende Anzahl von Parametern. `12` - Unbekannter Funktionscode. `16` - Sitzung nicht an Shared-Memory-Objekt angebunden. `20` - Sitzung nicht an Shared-Memory-Objekt angebunden.
`#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: `A` - Trace ist nur aktiv, nachdem Db2-Aufrufe geschrieben wurden. `B` - Trace ist nur aktiv, bevor Db2-Aufrufeinträge geschrieben werden. `S` - Trace ist aktiv, bevor und nachdem Db2-Aufrufeinträge geschrieben werden. `Blank` - Trace ist inaktiv, es werden keine DB2-Aufrufeinträge geschrieben.

### NDBDST_L - Beschreibung der abgerufenen dynamischen SQL- Trace-Daten

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.

##### GDATA

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

##### LDATA

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)

### NDBDSTPA - Schreiben von Trace-Sätzen nach einem Db2-Aufruf

Das Subprogramm `NDBDSTPA` Natural startet das Schreiben von Trace-Sätzen für eine Natural for Db2-Sitzung erst nach einem Db2-Aufrufeintrag.

### NDBDSTPB - Schreiben von Trace-Sätzen vor einem Db2-Aufruf

Das Subprogramm `NDBDSTPB` Natural startet das Schreiben von Trace-Sätzen für eine Natural for Db2-Sitzung erst vor einem Db2-Aufrufeintrag.

### NDBDSTPF - Lesen von Trace-Einträgen vom Ältesten zum Neuesten

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.

### NDBDSTPL - Lesen von Trace-Einträgen vom Neuesten zum Ältesten

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.

### NDBDSTPR - Zurücksetzen des Trace-Puffers

Das Natural-Subprogramm `NDBDSTPR` setzt den dynamischen SQL-Trace-Puffer auf seinen Ausgangszustand zurück. Alle Trace-Einträge gehen dabei verloren.

### NDBDSTPS - Tracing neu starten

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.

### NDBDSTPT - Tracing beenden

Das Natural-Subprogramm `NDBDSTPT` zeigt die Beendigung des Trace.

### On this page

- Arbeitsweise des Tracing
- Tracing für dynamische SQL-Statements aktivieren
- Dynamische SQL-Statements tracen