webve: Zugriffsplandiagramme für einzelne SQL-Anweisungen generieren

Nachdem Sie eine einzelne SQL-Anweisung an die webve-API übergeben haben, bearbeitet die API die Anweisung mit EXPLAIN und gibt die URL zum Aufrufen eines Diagramms des Zugriffsplans zurück.

Eingabeparameter

Übergeben Sie die folgenden Paare von Schlüsseln und Werten über diese URL an die API: https://localhost/tuning/webve

Tabelle 1. Eingabeparameter
Key (Schlüssel) Wert Mögliche Werte Standardwert
dbType Der Typ des Datenservers. ZOS  
dbHost Der Host des Datenservers. Domänenname oder IP-Adresse  
dbPort Die Portnummer des Datenservers    
dbName Der Name des Datenservers    
dbUser Die bei der Herstellung einer Verbindung zum Datenserver zu verwendende ID.    
dbPassword Das bei der Herstellung einer Verbindung zum Datenserver zu verwendende Kennwort.    
sql Der Text der SQL-Anweisung.    
schema Das Schema für den EXPLAIN-Prozess, das für nicht qualifizierte Objekte in der SQL-Anweisung verwendet werden soll. Dieser Wert überschreibt den Wert, der in der Datei tuning_service.properties festgelegt wurde.    
sqlid Legt den Wert für das Sonderregister CURRENT SQLID fest.   Wenn Sie keinen Wert angeben, verwendet der Optimierungsservice die Berechtigungs-ID, die für die Herstellung der Verbindung zum Subsystem angegeben wurde.

Ausgabeparameter

Die API übergibt die folgenden Paare von Schlüsseln und Werten:

Tabelle 2. Ausgabeparameter
Schlüssel Wert
code Der Rückkehrcode vom Web-API.
0
Ohne Warnungen beendet
4
Mit Warnungen beendet
8
Infolge eines Fehlers ohne Abschluss beendet
link Die URL für das Zugriffsplandiagramm. Der Link läuft standardmäßig nach 7 Tagen ab. Sie können diesen Zeotraum in der Datei tuning_service.properties ändern.
message Fehler- oder Warnnachrichten.
exception Informationen zu einer eventuell aufgetretenen Ausnahmebedingung. Diese Informationen können dem IBM Support während der Arbeit für Sie bei der Fehlerbehebung helfen.

Beispiel 1

Dieses Beispiel verwendet cURL, um eine SQL-Anweisung an die webve-API zu übergeben, die die URL zurückgibt, die angibt, wo sich das Zugriffsplandiagramm befindet.

Eingabe
curl 
--insecure 
-X POST 
-H "Content-Type: application/json; charset=UTF-8"
--data "{ 
   dbType:ZOS, 
   dbHost:Host, 
   dbPort:Portnummer, 
   dbName:Subsystem, 
   dbUser:Benutzer-ID, 
   dbPassword:Kennwort, 
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\" 
   }"
https://localhost/tuning/webve
Ausgabe
{        
"code" :0 ,        
"link" :"http://localhost:8080/ tuning/showwebve/webve/1394679279138-
      6626301199030/"
} 

Beispiel 2

Dieses Beispiel verwendet cURL, um eine SQL-Anweisung an die webve-API zu übergeben. Dies ist allerdings ein Fehler, weil die Tabelle Benutzer-ID.NATION nicht definiert ist.

Eingabe
curl 
--insecure 
-X POST 
-H "Content-Type: application/json; charset=UTF-8"
--data "{  
   dbType:ZOS, 
   dbHost:Host, 
   dbPort:Portnummer, 
   dbName:Subsystem, 
   dbUser:Benutzer-ID, 
   dbPassword:Kennwort, 
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\",
   }"
https://localhost/tuning/webve
Ausgabe
{ 
"code":8, 
"error":"Die Anweisung EXPLAIN ist fehlgeschlagen. Der folgende Fehler wurde zurückgegeben:
   SQLCODE: -204, SQLSTATE-Wert: 42704.Die SQL-Anweisung ist fehlgeschlagen.", 
"exception":"com.ibm.datatools.dsoe.explain.zos.exception.ExplainException:
   com.ibm.datatools.dsoe.common.da.exception.OSCSQLException:
   com.ibm.db2.jcc.am.SqlSyntaxErrorException: Benutzer-ID.NATION IST EIN
      NICHT DEFINIERTER NAME.
   SQLCODE=-204, SQLSTATE-WERT=42704, TREIBER=3.67.24..."
}

Feedback