webve: Generación de gráficos de plan de acceso para sentencias SQL individuales

Después de pasar una sentencia SQL individual a la API webve, la API explica la sentencia y devuelve el URL de un diagrama del plan de acceso.

Parámetros de entrada

Pase los siguientes pares de claves y valores a la API mediante este URL: https://localhost/tuning/webve

Tabla 1. Parámetros de entrada
Clave Valor Valores posibles Valor predeterminado
dbType El tipo de servidor de datos. ZOS  
dbHost El host del servidor de datos. Nombre de dominio o dirección IP  
dbPort El número de puerto del servidor de datos    
dbName El nombre del servidor de datos    
dbUser El ID que se ha de utilizar para conectarse al servidor de datos.    
dbPassword La contraseña que se ha de utilizar para conectarse al servidor de datos.    
sql Texto de la sentencia SQL.    
schema El esquema que ha de utilizar el proceso EXPLAIN para los objetos no calificados de la sentencia SQL. Este valor altera temporalmente el valor establecido en el archivo tuning_service.properties.    
sqlid Establece el valor para el registro especial CURRENT SQLID.   Si no especifica un valor, el servicio de ajuste utiliza el ID de autorización especificada para la conexión en el subsistema.

Parámetros de salida

La API devuelve los siguientes pares de claves y valores:

Tabla 2. Parámetros de salida
Clave Valor
code El código de retorno de la API web.
0
Completado con avisos
4
Completado con avisos
8
Finalizado sin completar debido a un error
link El URL del gráfico del plan de acceso. De forma predeterminada, el enlace caduca después de 7 días. Puede cambiar este periodo de tiempo en el archivo tuning_service.properties.
message Cualquier mensaje de error o de aviso.
exception Información acerca de la excepción, si se ha producido una. Esta información puede ser útil para el servicio de soporte de IBM si trabaja con ellos para la resolución de un problema.

Ejemplo 1

En este ejemplo se utiliza cURL para pasar una sentencia SQL a la API webve, la cual devuelve el URL donde está ubicado el gráfico de plan de acceso.

Entrada
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
   dbType:ZOS,
   dbHost:host,
   dbPort:port_number,
   dbName:subsystem,
   dbUser:user_ID,
   dbPassword:password,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\"
   }"
https://localhost/tuning/webve
Salida
{        
"code":0,
"link" :"http://localhost:8080/ tuning/showwebve/webve/1394679279138-
      6626301199030/"
} 

Ejemplo 2

En este ejemplo se utiliza cURL para pasar una sentencia SQL a la API webve. Sin embargo, existe un error ya que la tabla user_ID.NATION no está definida.

Entrada
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
   dbType:ZOS,
   dbHost:host,
   dbPort:port_number,
   dbName:subsystem,
   dbUser:user_ID,
   dbPassword:password,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\",
   }"
https://localhost/tuning/webve
Salida
{ 
"code":8,
"error":"Ha fallado la sentencia EXPLAIN. Se ha devuelto el siguiente error:    SQLCODE: -204, SQLSTATE: 42704. Ha fallado la sentencia SQL. , 
"exception":"com.ibm.datatools.dsoe.explain.zos.exception.ExplainException:
   com.ibm.datatools.dsoe.common.da.exception.OSCSQLException:
   com.ibm.db2.jcc.am.SqlSyntaxErrorException: user_ID.NATION IS AN
      UNDEFINED NAME.
   SQLCODE=-204, SQLSTATE=42704, DRIVER=3.67.24..."
}

Comentarios