Das Dienstprogramm GeneratePureQueryXml generiert auf der Basis der SQL-Informationen aus der von Ihnen angegebenen Eingabe eine pureQueryXML-Datei.
Die Quelle der Informationen kann eine SQL-Scriptdatei sein, die Anweisungen und Cursorattributinformationen enthält, eine
InfoSphere Optim Query Workload Tuner XML-Datei oder der dynamische Cache einer Datenbank.
Das Dienstprogramm GeneratePureQueryXml liest die SQL-Anweisungen und Informationen zu den Anweisungen
und erstellt eine pureQueryXML-Datei. Verwenden Sie nach dem Erstellen der pureQueryXML-Datei das Konfigurationsdienstprogramm, um
die Datei für die Verwendung mit pureQuery Runtime vorzubereiten.
Nachdem Sie die pureQueryXML-Datei konfiguriert haben, verwenden Sie das Dienstprogramm StaticBinder, um DB2-Pakete zu erstellen und die binden, die die SQL-Anweisungen in der konfigurierten pureQueryXML-Datei enthalten.
Das Thema ist in die folgenden Abschnitte unterteilt:
Syntax des Befehls

(1)
>>-------java--java com.ibm.pdq.tools.GeneratePureQueryXml------>
>-- -username--Benutzer-ID-- -password--Kennwort-- -url--JDBC-URL-->
>--+---------------------------------------------+-------------->
| .-com.ibm.db2.jcc.DB2Driver-. |
'- -driverName--+-JDBC-Treiber--------------+-'
>-- -pureQueryXml--Dateiname------------------------------------>
>-- -inputSql--+-Dateiname-----------------+-------------------->
| (2) |
'-------| Anweisungscache |-'
>--+-------------------------------------------+---------------->
| (3).- - - -------------. |
'- -commentStart------+-Kommentaranzeiger-+-'
>--+---------------------------------------+-------------------->
| .-NOT_SET-. |
'- -sqlLiteralSubstitution--+-DISABLE-+-'
'-ENABLE--'
>--+-------------------------------------+---------------------->
| .-;---------. |
'- -statementDelimiter -+-Begrenzer-+-'
>--+------------------------------------------------------+----->
| .-HOLD_CURSORS_OVER_COMMIT-. |
'- -resultSetHoldability -+-CLOSE_CURSORS_AT_COMMIT--+-'
>--+----------------------------------------------+------------->
| .-CONCUR_READ_ONLY-. |
'- -resultSetConcurrency--+-CONCUR_UPDATABLE-+-'
>--+--------------------------------------------+--------------->
| .-TYPE_FORWARD_ONLY-----. |
'- -resultSetType--+-TYPE_SCROLL_SENSITIVE-+-'
'-TYPE_SCROLL_SENSITIVE-'
>--+-----------------------+--+--------+-----------------------><
| (4) | '- -help-'
'-| Traceoptionen |-----'
Anweisungscache
|--DYNAMIC_STATEMENT_CACHE--+-------------------------------------------------------------------------+--|
| .-,--------------------------------------------. |
| V (5) | |
'- -filterCacheBy--"--------+---clientProgramId-- -Programm-ID-----+-+--"-'
+---clientUser-- -Client-Benutzer-ID---+
+---currentSqlId-- -Berechtigungs-ID---+
+---currentSchema-- -Schemaname--------+
'---cachedAfter-- -Cachezeit-----------'
Anmerkungen:
- Sie können die Optionen in beliebiger Reihenfolge angeben.
- SQL-Anweisungen können aus dem dynamischen Anweisungscache nur für
DB2 für z/OS-Datenbanken abgerufen werden.
- Der Standardwert sind zwei Gedankenstriche (--).
- Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.
- Jeder Filter kann mindestens einmal angegeben werden. Die Filter können in
beliebiger Reihenfolge angegeben werden.
Eine Beschreibung der im Diagramm verwendeten Konventionen finden Sie in Syntaxdiagramme lesen.
Beschreibung der Optionen
- -username Benutzer-ID
- Die Benutzer-ID gibt die Benutzer-ID an, die für die Authentifizierung mit der Datenbank verwendet wird.
- -password Kennwort
- Gibt das Kennwort an, das für die Authentifizierung mit der Datenbank verwendet werden soll.
- -url JDBC-URL
- Gibt die JDBC-URL an, die zum Herstellen einer Verbindung zur Datenbank verwendet werden soll.
- -driverName JDBC-Treiber
- Gibt den vollständig qualifizierten Namen des JDBC-Treibers an, der zum Herstellen einer Verbindung zur Datenbank verwendet werden soll. Der Standardwert ist com.ibm.db2.jcc.DB2Driver,
der Treiber für IBM® Data
Server Driver für JDBC und SQLJ.
- -pureQueryXml Datei
- Gibt den absoluten oder relativen Pfad zur pureQueryXML-Ausgabedatei an.
- -inputSql Datei | DYNAMIC_STATEMENT_CACHE Cachefilter
- Gibt die Quelle der SQL-Informationen an, die zum Erstellen der
pureQueryXML-Datei verwendet wird.
Informationen zum Format der SQL-Scriptdatei finden Sie in Format der vom Dienstprogramm GeneratePureQueryXml verwendeten SQL-Scriptdatei.
- Datei
- Gibt den absoluten oder relativen Pfad zu einer SQL-Scriptdatei mit der Erweiterung .sql oder zu einer XML-Datei mit der Erweiterung .xml an.
Wenn eine XML-Datei angegeben wird, muss die Datei eine gültige InfoSphere Optim Query Workload Tuner-Datei sein. Wenn die XML-Datei nicht gültig ist, wird ein Fehler zurückgegeben.
Informationen zum Exportieren einer Query Workload Tuner-Datei finden Sie in der Dokumentation zu InfoSphere Optim Query Workload Tuner.
Beim Erfassen von SQL-Anweisungen unterstützt InfoSphere Optim Query Workload Tuner die folgenden Funktionen:
- Bei DB2 for Linux, UNIX, and
Windows-Datenbanken können Sie SQL-Anweisungen aus dem Paketcache erfassen.
- Bei DB2 for z/OS-Datenbanken können Sie SQL-Anweisungen aus dem Anweisungscache erfassen. Sie können von InfoSphere Optim Query Workload Tuner ausgeführte SQL-Anweisungen ausschließen, indem Sie die Option Vom Erfassungsprozess abgesetzte dynamische Abfragen ausschließen aktivieren.
Wenn eine SQL-Anweisung mehrmals in der Eingabedatei enthalten ist, wird sie nur einmal in die pureQueryXML-Ausgabedatei aufgenommen. Informationen dazu, wie doppelte SQL-Anweisungen erkannt werden, finden Sie in Doppelte SQL-Anweisungen in einer SQL-Datei erkennen.
- DYNAMIC_STATEMENT_CACHE -filterCacheBy "Filteroptionszeichenfolge"
- Gibt an, dass das Dienstprogramm GeneratePureQueryXml SQL-Anweisungen aus dem dynamischen Cache der Datenbank, die
mit der Option -url angegeben wurde, in die pureQueryXML-Ausgabedatei kopiert. Die Option DYNAMIC_STATEMENT_CACHE ist
nur gültig, wenn eine Verbindung zu einer DB2 for z/OS-Datenbank besteht. Andernfalls wird ein
Fehler zurückgegeben. Die Option DYNAMIC_STATEMENT_CACHE darf nicht mit den folgenden Optionen angegeben werden:
- -commentStart
- -resultSetConcurrency
- -resultSetHoldabillity
- -resultSetType
- -statementDelimiter
Der Cachefilter -filterCacheBy "Filteroptionszeichenfolge" ist optional.
Der Cachefilter begrenzt die SQL-Anweisungen, die in die
pureQueryXML-Ausgabedatei kopiert werden, auf der Basis der Eigenschaften, die
der Anweisung zugeordnet sind. Wird kein Cachefilter angegeben, werden alle im dynamischen Cache vorhandenen
Anweisungen in die pureQueryXML-Datei kopiert.
Die Filteroptionszeichenfolge ist
eine Liste, die aus in Anführungszeichen gesetzten, durch Kommas getrennten Schlüssel/Wert-Paaren besteht.
Wird mehr als ein Filter angegeben, werden nur SQL-Anweisungen in die pureQueryXML-Ausgabedatei kopiert, die allen Kriterien entsprechen.
Die gültigen Optionen und Werte für die Filteroptionszeichenfolge sind in der folgenden Liste beschrieben:
- clientProgramId Programm-ID
- Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Eigenschaftswert
clientProgramId der Programm-ID entspricht.
Anmerkung: Wenn Sie SQL-Anweisungen mit der Option
clientProgramId filtern wollen, muss eine Anwendung eine Verbindung oder eine Datenquellendefinition verwenden, die
die angepasste JDBC-Eigenschaft clientProgramId angibt. Werden die
SQL-Anweisungen der Anwendung in den dynamischen Cache gestellt, wird die Eigenschaftsinformation clientProgramId
der Anweisung zugeordnet. Wenn die Verbindung oder die Datenquellendefinition nicht die Eigenschaft
clientProgramId angeben, werden keine clientProgramId-Informationen zusammen mit der Anweisung
gespeichert.
- clientUser Client-Benutzer-ID
- Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Eigenschaftswert
clientUser der Client-Benutzer-ID entspricht.
Anmerkung: Wenn Sie SQL-Anweisungen auf Basis der Option
clientUser filtern wollen, muss eine Anwendung eine Verbindung oder eine Datenquellendefinition verwenden, die
die angepasste JDBC-Eigenschaft clientUser angibt. Werden die
SQL-Anweisungen der Anwendung in den dynamischen Cache gestellt, wird die Eigenschaftsinformation clientUser
der Anweisung zugeordnet. Wenn die Verbindung oder die Datenquellendefinition nicht die Eigenschaft
clientUser angeben, werden keine clientUser-Informationen zusammen mit der Anweisung
gespeichert.
- currentSqlId Berechtigungs-ID
- Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Wert für CURRENT SQLID
der Berechtigungs-ID entspricht.
- currentSchema Schemaname
- Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Wert für CURRENT SCHEMA
dem Schemanamen entspricht.
- cachedAfter Cachezeit
- Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn die Anweisung nach der Zeit Cachezeit in den dynamischen Cache gestellt wurde.
Der Wert Cachezeit muss eine gültige DB2-Zeichenfolgedarstellung eines Datums, einer Uhrzeit oder einer
Zeitmarke sein. Informationen zu DB2-Werten für Datum, Uhrzeit und Zeitmarke finden Sie in Datums-/Uhrzeitwerte.
- -commentStart Kommentaranzeiger
- Gibt bei einer SQL-Scriptdatei die Zeichenkombination an, die am Anfang einer Zeile angibt, dass es sich um eine Kommentarzeile handelt. Eine Kommentarzeile kann Cursorattribute einer Anweisung enthalten, die auf die SQL-Anweisung angewendet werden, die dem Kommentar unmittelbar folgt. Die Standardeinstellung sind zwei Gedankenstriche (--). Die Start- und Endkommentarzeichen /* und */ werden bei dieser Option nicht unterstützt.
Diese Option wird nicht unterstützt, wenn die Eingabedatei eine XML-Datei ist. Es wird eine Warnung angezeigt, dass die angegebene Option ignoriert wird.
- -sqlLiteralSubstitution ENABLE|DISABLE|NOT_SET
- Gibt an, ob das Dienstprogramm GeneratePureQueryXml Literalwerte in SQL-Anweisungen durch Parametermarken ersetzen kann. Der Standardwert ist NOT_SET, d. h. Literalwerte werden in den SQL-Anweisungen nicht ersetzt. Die SQL-Literalersetzung ist identisch zur Ersetzung, die erfolgt, wenn pureQuery Runtime SQL-Anweisungen mit aktivierter SQL-Literalersetzung erfasst.
In der folgenden Liste werden die unterstützten Werte beschrieben:
- DISABLE
- Gibt an, dass das Dienstprogramm keine Literalersetzung durchführt.
Die SQL-Anweisungen werden nicht geändert.
Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf DISABLE gesetzt.
- ENABLE
- Gibt an, dass das Dienstprogramm Literalwerte in den SQL-Anweisungen durch Parametermarken ersetzt. SQL-Literale werden nicht ersetzt, wenn das Dienstprogramm feststellt, dass sich die Ersetzung der Literale auf die Ergebnisse der SQL-Anweisungen auswirken würde. Bei der Durchführung der SQL-Literalersetzung werden Kommentare aus den Anweisungen entfernt. Bei SQL-Anweisungen, für die die SQL-Literalersetzung durchgeführt wird, werden mehrere Leerzeichen, auch voran- oder nachgestellte Leerzeichen, durch ein einziges Leerzeichen ersetzt.
Das Dienstprogramm entfernt doppelte SQL-Anweisungen, die während der SQL-Literalersetzung erstellt wurden.
Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf ENABLE gesetzt.
- NOT_SET
- Gibt an, dass für diese Datei keine Literalersetzung durchgeführt wird. Dieser Wert ist der Standardwert.
Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf NOT_SET gesetzt.
Wenn pureQuery Runtime SQL-Anweisungen in einer pureQueryXML-Datei erfasst, ist die Einstellung für die SQL-Literalersetzung in der Datei der Wert, den die pureQuery Runtime-Eigenschaft sqlLiteralSubstitution hatte, als die Anweisungen erfasst wurden.
Informationen zur SQL-Literalersetzung von pureQuery Runtime finden Sie in sqlLiteralSubstitution (Eigenschaft).
Informationen zum Attribut für die SQL-Literalersetzung bei der Zusammenführung von pureQueryXML-Dateien finden Sie in Merge (Dienstprogramm).
- -statementDelimiter Begrenzer
- Gibt die Zeichenkombination an, die in SQL-Scriptdateien zum Trennen von Anweisungen verwendet wird. Der Standardwert ist ein Semikolon (;).
Diese Option wird nicht unterstützt, wenn die Eingabedatei eine XML-Datei von InfoSphere Optim Query Workload Tuner ist. Es wird eine Warnung angezeigt, dass die angegebene Option ignoriert wird.
- -resultSetHoldability Lebensdauer
- Gibt die Lebensdauer der Ergebnismenge an, die auf alle Anweisungen in der Datei angewendet wird. Für die Lebensdauer kann einer der folgenden Werte angegeben werden:
- CLOSE_CURSORS_AT_COMMIT legt fest, dass die Ergebnismengen beim Commit geschlossen werden. Dieser Wert setzt den JDBC-Wert java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT.
- HOLD_CURSORS_OVER_COMMIT legt fest, dass die Ergebnismengencursor commitübergreifend beibehalten werden. Dieser Wert setzt den JDBC-Wert java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT.
Der Standardwert ist HOLD_CURSORS_OVER_COMMIT.
In SQL-Scriptdateien kann der Lebensdauerwert für eine bestimmte SQL-Anweisung in der Datei überschrieben werden, indem die Lebensdauer in einer Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.
Bei XML-Dateien von Query Workload Tuner aus DB2 for z/OS wird die Lebensdauer der Ergebnismenge für die ursprüngliche Vorbereitung einer SQL-Anweisung in der Datei gespeichert.
Wenn die Informationen zur Lebensdauer der Ergebnismenge in der Datei enthalten sind, nutzt das Dienstprogramm diesen Wert für die SQL-Anweisung in der pureQueryXML-Ausgabedatei.
Informationen zur Lebensdauer der Ergebnismenge für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.
- -resultSetConcurrency gemeinsamer_Zugriff
- Gibt den gemeinsamen Zugriff für die Ergebnismenge fest, der auf alle Anweisungen angewendet wird.
Für den gemeinsamen Zugriff kann einer der folgenden Werte angegeben werden:
- CONCUR_READ_ONLY legt die Cursorparallelität als schreibgeschützt fest.
- CONCUR_UPDATABLE legt die Cursorparallelität als aktualisierbar fest.
Der Standardwert ist CONCUR_READ_ONLY.
In SQL-Scriptdateien kann der Wert für gemeinsamen Zugriff für eine bestimmte SQL-Anweisung überschrieben werden, indem der gemeinsame Zugriff in einer Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.
Informationen zur Festlegung des gemeinsamen Zugriffs der Ergebnismenge für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.
- -resultSetType Typ
- Gibt den Ergebnismengentyp an, der auf alle Anweisungen angewendet wird. Für den Typ kann einer der folgenden Werte angegeben werden:
- TYPE_FORWARD_ONLY legt den Ergebnismengentyp als nur vorwärts fest.
- TYPE_SCROLL_SENSITIVE legt den Ergebnismengentyp als blättersensitiv fest.
- TYPE_SCROLL_INSENSITIVE legt den Ergebnismengentyp als nicht blättersensitiv fest.
Der Standardwert ist TYPE_FORWARD_ONLY.
In SQL-Scriptdateien kann der Wert für den Ergebnismengentyp einer bestimmten SQL-Anweisung überschrieben werden, indem der Ergebnismengentyp in der Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.
Informationen zur Festlegung des Ergebnismengentyps für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.
- Traceoptionen
- Sie können die Datei, in der Nachrichten protokolliert werden sollen, und
die zu protokollierende Informationsebene angeben.

>>-+------------------------+--+---------------------------+---><
'- -traceFile--Dateiname-' | .-OFF-----. |
'- -traceLevel--+-ALL-----+-'
+-SEVERE--+
+-WARNING-+
+-INFO----+
+-CONFIG--+
+-FINE----+
+-FINER---+
'-FINEST--'
- -traceFileDateiname
- Gibt den absoluten oder relativen Pfad und den Namen der Datei an, die zum Protokollieren von Informationen zur Operation verwendet werden soll.
Falls die Datei bereits vorhanden ist, hängt pureQuery neue Nachrichten an den vorhandenen Inhalt der Datei an. Standardmäßig werden die Einträge in 'System.err' geschrieben.
- -traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
- Gibt den zu protokollierenden Informationstyp an. Die Standardstufe ist OFF.
Wenn Sie keine Datei angeben, in die die Protokolleinträge geschrieben werden sollen, und Sie diese Option auf einen anderen Wert als OFF setzen, werden die Einträge in System.err geschrieben.
- -help
- Zeigt zusammenfassende Informationen zur Verwendung an. Nicht gültig in einer Optionsdatei.
Hinweise zur pureQueryXML-Ausgabedatei
Die folgende Liste enthält Informationen zur Verwendung der pureQueryXML-Datei:
- Stellen Sie beim Erstellen einer pureQueryXML-Datei aus einer SQL-Scriptdatei oder einer XML-Datei von InfoSphere Optim Query Workload Tuner sicher, dass für jede SQL-Anweisung die folgenden Bedingungen erfüllt sind:
- Der SQL-Anweisungstext in der Datei muss mit der von der Anwendung abgesetzten SQL-Anweisung übereinstimmen. Die Großschreibung und die Leerzeichen der Anweisungen müssen übereinstimmen.
- Die in der Datei für die SQL-Anweisung angegebenen Einstellungen zur Lebensdauer der Ergebnismenge, zum gemeinsamen Zugriff und zum Typ müssen mit den Einstellungen der von der Anwendung abgesetzten SQL-Anweisung übereinstimmen.
Stimmen die Informationen nicht überein, führt die pureQuery-Clientoptimierung keinen Abgleich der SQL-Anweisung mit der von der Anwendung abgesetzten Anweisung durch, wenn die pureQuery Runtime-Eigenschaft executionMode auf STATIC gesetzt ist oder wenn die pureQuery Runtime-Eigenschaft capturedOnly auf TRUE gesetzt ist.
Wenn die Eingabedatei eine Query Workload Tuner-XML-Datei ist, gilt Folgendes:
- Die XML-Datei enthält einige Sonderregisterinformationen für SQL-Anweisungen. Wenn das Dienstprogramm GeneratePureQueryXml eine pureQueryXML-Datei aus einer XML-Datei generiert, sind die Sonderregisterinformationen als Metadaten in der pureQueryXML-Datei enthalten. Es gibt Unterschiede zwischen den von pureQuery Runtime erfassten Sonderregisterinformationen und den von Query Workload Tuner erfassten Sonderregisterinformationen. GeneratePureQueryXml enthält die Sonderregisterinformationen, die normalerweise von pureQuery Runtime erfasst werden.
Wenn Sie die pureQueryXML-Datei mit dem Dienstprogramm Configure konfigurieren, können Sie die Option -groupSQLBySpecialRegisters angeben, um die SQL-Anweisungen in der Datei entsprechend der Sonderregistereinstellungen zu gruppieren. Sie können auch die Option -optionsFileForBind angeben, um eine StaticBinder-Beispieloptionsdatei zu erstellen, die Bindeoptionen basierend auf den Sonderregistereinstellungen enthält. Informationen zu den Configure-Optionen finden Sie in Configure (Dienstprogramm).
Informationen zu den von pureQuery Runtime
überwachten und aufgezeichneten Sonderregisterinformationen finden Sie in Änderungen an DB2-Sonderregistern mit der pureQuery-Clientoptimierung verfolgen.
Sie müssen eine
DB2 for z/OS-Datenbank konfigurieren, um SQL-Leistungsstatistikdaten in einer InfoSphere Optim Query Workload Tuner XML-Datei zu erfassen. Informationen zum Aktivieren der Statistikerfassung finden Sie in DB2 for z/OS-Leistungsstatistikdaten in einer InfoSphere Optim Query Workload Tuner XML-Datei erfassen.
- Bevor das Dienstprogramm der pureQueryXML-Datei eine Anweisung hinzufügt, bereitet es die Anweisung für die Erfassung von zugehörigen Metadaten vor.
Wenn ein Wert für das Sonderregister CURRENT SCHEMA in der XML-Datei enthalten ist, verwendet das Dienstprogramm den Wert des Sonderregisters CURRENT SCHEMA bei der Durchführung der Vorbereitung.
- Wenn das Dienstprogramm feststellt, dass die SQL-Anweisung in der XML-Datei statisch ausgeführt wurde, wird die Anweisung nicht in die pureQueryXML-Ausgabedatei aufgenommen.
- Das Dienstprogramm GeneratePureQueryXml kopiert einige Statistikdaten aus der XML-Datei in die pureQueryXML-Ausgabedatei. Die Statistikdaten in der XML-Eingabedatei hängen vom Typ und von der Version der Datenbank sowie von der Version von InfoSphere Optim Query Workload Tuner ab. Diese Statistikdaten beeinflussen nicht, wie die SQL-Anweisungen in der pureQueryXML-Datei gebunden werden oder wie pureQuery Runtime SQL-Anweisungen mit Anweisungen abgleicht, die von einer Anwendung abgesetzt werden.
Wenn das Dienstprogramm keine Zeitmarkenangaben für SQL-Anweisungen findet, verwendet es das aktuelle Datum und die aktuelle Uhrzeit.
- In der XML-Datei können keine Cursorattribute angegeben werden. Sie können Cursorattribute mit den Optionen -resultSetType, -resultSetHoldability und -resultSetConcurrency des Dienstprogramms GeneratePureQueryXml angeben. Die Optionen gelten für alle SQL-Anweisungen in der XML-Datei.
Bei XML-Dateien aus DB2 for z/OS wird die Lebensdauer der Ergebnismenge für die ursprüngliche Vorbereitung einer SQL-Anweisung in der Datei gespeichert. Wenn die Informationen zur Lebensdauer der Ergebnismenge in der Datei enthalten sind, nutzt das Dienstprogramm diesen Wert für die SQL-Anweisung in der pureQueryXML-Ausgabedatei.
pureQuery Runtime berücksichtigt die SQL-Anweisung und die
Cursorattribute der Anweisung bei der Steuerung der Ausführung einer SQL-Anweisung.
Sie können pureQuery Runtime beispielsweise so konfigurieren, dass SQL-Anweisungen statisch ausgeführt werden. Wenn die Anweisung und die Attribute in der pureQueryXML-Datei nicht der Anweisung und den Attributen der Anwendung entsprechen, führt pureQuery Runtime die Anweisung nicht statisch aus.
- Wenn die SQL-Anweisungen in der pureQueryXML-Ausgabedatei unterschiedliche Bindeoptionen für die statische Ausführung erfordern, können Sie den pureQueryXML-Editor in der Workbench verwenden, um die SQL-Anweisungen in Anweisungsgruppen zu gruppieren. Dann können Sie mit dem Dienstprogramm StaticBinder unterschiedliche Bindeoptionen für die Anweisungsgruppen angeben.
Sie können das Dienstprogramm StaticBinder mit der Option -statementBindError unter Angabe des Werts REMOVE oder MARK_INVALID ausführen.
Das Dienstprogramm StaticBinder überspringt die SQL-Anweisungen, die beim Bindeprozess einen Fehler zurückgeben.
- Wenn die Eingabedatei eine Gruppe von SQL-Anweisungen ist, die aus einem dynamischen
DB2 for z/OS-Anweisungscache abgerufen wurden, gilt Folgendes:
- Sie müssen jedes DB2 for z/OS-Susbsystem konfigurieren, das ein Ziel dieser
Abrufoperation ist. Informationen zum Konfigurieren eines DB2 for z/OS-Susbsystems finden Sie in z/OS-Subsystem zum Abrufen von SQL-Anweisungen aus einem dynamischen Cache konfigurieren.
- Das Dienstprogramm GeneratePureQueryXml lässt zur Festlegung der Standardwerte für bestimmte Sonderregister
und Cursorattribute Eigenschaften zu. Diese Attribute werden in der Regel nicht unterstützt, wenn SQL-Anweisungen aus
dem dynamischen Anweisungscache abgerufen werden. Weil die tatsächlichen Werte aus dem Cache abgerufen werden,
ist ein Überschreiben der Werte nicht erforderlich.
- Bevor das Dienstprogramm der pureQueryXML-Datei eine Anweisung hinzufügt, bereitet es die Anweisung für die Erfassung von zugehörigen Metadaten vor.
Wenn ein Wert für das Sonderregister CURRENT SCHEMA vorhanden ist, verwendet das Dienstprogramm den Wert des Sonderregisters CURRENT SCHEMA bei der Durchführung der Vorbereitung.
- Das Dienstprogramm verwendet bei der Verarbeitung der abgerufenen SQL-Anweisungen die Zeitmarkeninformationen des dynamischen Caches.
- Der Inhalt der pureQueryXml-Ausgabedatei hängt von dem aktuellen Inhalt des dynamischen
DB2-Anweisungscaches und von den angegebenen Werten
der Option filterCacheBy ab. Folgendes kann sich darauf auswirken, welche Anweisungen vom Dienstprogramm GeneratePureQueryXml abgerufen werden:
- Im Cache können jederzeit Anweisungen vorhanden sein, die von verschiedenen Anwendungen
vorbereitet wurden. Wenn Sie Anweisungen aus dem Cache abrufen, ohne einen Filter anzugeben, rufen Sie möglicherweise
Anweisungen ab, die nicht zu ihrer Anwendung gehören.
- Wird ein Filter angegeben, kann der Filter möglicherweise eine Anweisung auslassen,
die von Ihrer Anwendung verwendet wird. Beispiel: Anwendung A und Anwendung B
verwenden eine allgemeine SQL-Anweisung. Sie können diese Anweisung im Cache gemeinsam nutzen, aber
DB2 hat möglicherweise aufgezeichnet, dass die Anweisung von
Anwendung A in den Cache gestellt wurde. Wenn Sie einen Filter wie "clientProgramId B" angeben, wird diese Anweisung
nicht in der Ausgabedatei enthalten sein.
- Es ist möglich, dass Anweisungen, die kürzlich während einer Ausführung Ihrer Anwendung ausgeführt wurden,
sich nicht im Cache befinden. Mit den großen Cachegrößen, die mit den neuesten
DB2-Releases eingeführt wurden, wird dieser Fall
wahrscheinlich nicht auftreten.
- Die pureQueryXML-Ausgabedatei kann nicht direkt mit der pureQuery-Clientoptimierung
zur statischen Ausführung von SQL-Anweisungen verwendet werden. Bevor Sie das Dienstprogramm StaticBinder verwenden, müssen Sie die
pureQueryXML-Datei mit dem Dienstprogramm Configure so modifizieren, dass sie mit der
pureQuery-Clientoptimierung verwendet werden kann.
- Die pureQueryXML-Ausgabedatei enthält keine Anwendungsausführungsinformationen wie Stack-Traceinformationen
und Sonderregisterinformationen, die bei einer pureQueryXML-Datei verfügbar sind, die erstellt wird, wenn pureQuery
Runtime SQL-Anweisungen aus einer Anwendung erfasst, die die pureQuery-Clientoptimierung verwendet.
- Die pureQueryXML-Ausgabedatei enthält nicht die folgenden Informationen zu SQL-Anweisungen, die von der pureQuery-Clientoptimierung verwendet werden, um eine Anweisung als SQL-Anweisung zur Laufzeit anzugeben:
- Automatisch generierte Schlüsselspaltennamen
- Automatisch generierte Schlüsselspaltenindizes
- Automatisch generierter Schlüsselindikatoren
Ist eine Anwendung, die die pureQuery-Clientoptimierung verwendet, so konfiguriert, dass sie SQL-Anweisungen statisch oder im Modus für die ausschließliche Verarbeitung erfasster Elemente ausführt und eine vom Dienstprogramm GeneratePureQueryXml erstellte pureQueryXML-Datei verwendet, wird eine von der Anwendung abgesetzte Anweisung nicht statisch ausgeführt, wenn die Anweisung eines dieser drei Features verwendet, auch wenn der Text der SQL-Anweisungen identisch ist.
Das folgende Beispiel erstellt die pureQueryXML-Datei
c:\statements.pdqxml, die Informationen zu Anweisungen enthält, die sich in der SQL-Scriptdatei
c:\mystatements.sql befinden. Der Wert der Option -
sqlLiteralSubstitution ist auf
ENABLE gesetzt, um Literale in SQL-Anweisungen durch Parametermarken zu ersetzen.
java com.ibm.pdq.tools.GeneratePureQueryXml
-username db2admin �password mypass
�url jdbc:db2://localhost:50000/mydb
-sqlLiteralSubstitution ENABLE
�pureQueryXml "C:\statements.pdqxml" �inputSql "C:\mystatements.sql"
Doppelte SQL-Anweisungen in einer SQL-Datei erkennen
Das Dienstprogramm GeneratePureQueryXml erkennt zwei SQL-Anweisungen als Duplikate, wenn der Text der beiden SQL-Anweisungen bis auf voran- und nachgestellte Leerzeichen identisch ist und wenn die folgenden Attribute identisch sind:
- Ergebnismengentyp
- Gemeinsamer Zugriff der Ergebnismenge
- Lebensdauer der Ergebnismenge
Die folgenden beiden Einträge in einer SQL-Datei werden als identisch betrachtet. Die SQL-Anweisungen unterscheiden sich nur durch die Anzahl der voran- und nachgestellten Leerzeichen:
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE ;
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE ;
Die folgenden beiden Einträge in einer SQL-Datei werden als nicht identisch betrachtet. Die Anzahl der Leerzeichen in den SQL-Anweisungen ist unterschiedlich:
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
Die folgenden beiden Einträge in einer SQL-Datei werden als nicht identisch betrachtet, da unterschiedliche Cursorattribute festgelegt sind:
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
-- resultSetType=TYPE_SCROLL_SENSITIVE
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
Die folgenden Einträge sind in einer SQL-Eingabedatei enthalten. Die Anweisungen sind bis auf die Literalwerte identisch.
SELECT * FROM EMPLOYEE WHERE EMPNO = '000010'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000020'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000030'
Wenn Sie das Dienstprogramm GeneratePureQueryXml ausführen und die Option
sqlLiteralSubstitution auf
ENABLE gesetzt ist, werden die Literalwerte durch eine Parametermarke ersetzt und die durch die Ersetzung erzeugten Duplikate werden entfernt. Das Ergebnis ist eine einzige SQL-Anweisung, die in die pureQueryXML-Datei geschrieben wird:
SELECT * FROM EMPLOYEE WHERE EMPNO = ?