Notas del release


37.7 db2XaListIndTrans (nueva API que reemplaza a sqlxphqr)

db2XaListIndTrans - Listar transacciones dudosas

Proporciona una lista de todas las transacciones dudosas para la base de datos actualmente conectada.

Ámbito

Esta API sólo afecta al nodo en el que se emite.

Autorización

Una de las siguientes:

Conexión necesaria

Base de datos

Archivo de inclusión de API

db2ApiDf.h

Sintaxis de API C



   /* Archivo: db2ApiDf.h */
   /* API: Listar transacciones dudosas */
   /* ... */
   SQL_API_RC SQL_API_FN
   db2XaListIndTrans (
      db2Uint32 versionNumber,
      void * pParmStruct,
      struct sqlca * pSqlca);
 
   typedef SQL_STRUCTURE db2XaListIndTransStruct
   {
     db2XaRecoverStruct * piIndoubtData;
     db2Uint32            iIndoubtDataLen;
     db2Uint32            oNumIndoubtsReturned;
     db2Uint32            oNumIndoubtsTotal;
     db2Uint32            oReqBufferLen;
   } db2XaListIndTransStruct;
 
   typedef SQL_STRUCTURE db2XaRecoverStruct
   {
     sqluint32      timestamp;
     SQLXA_XID      xid;
     char           dbalias[SQLXA_DBNAME_SZ];
     char           applid[SQLXA_APPLID_SZ];
     char           sequence_no[SQLXA_SEQ_SZ];
     char           auth_id[SQL_USERID_SZ];
     char           log_full;
     char           connected;
     char           indoubt_status;
     char           originator;
     char           reserved[8];
   } db2XaRecoverStruct;

Parámetros de API

versionNumber
Entrada. Especifica la versión y el nivel de release de la estructura que se pasa como segundo parámetro, pParmStruct.

pParmStruct
Entrada. Puntero a la estructura db2XaListIndTransStruct.

pSqlca
Salida. Puntero hacia la estructura sqlca. Para obtener más información sobre esta estructura, consulte el manual Administrative API Reference.

piIndoubtData
Entrada. Puntero hacia el almacenamiento intermedio suministrado de la aplicación donde se devolverán datos dudosos. Los datos dudosos están en formato db2XaRecoverStruct. La aplicación puede atravesar la lista de transacciones dudosas utilizando el tamaño de la estructura db2XaRecoverStruct, empezando en la dirección proporcionada por este parámetro.

Si el valor es NULL, DB2 calculará el tamaño del almacenamiento intermedio necesario y devolverá este valor en oReqBufferLen. oNumIndoubtsTotal contendrá el número total de transacciones dudosas. La aplicación puede asignar el tamaño de almacenamiento intermedio necesario y volver a emitir la API.

oNumIndoubtsReturned
Salida. El número de registros de transacciones dudosas que se devuelven en el almacenamiento intermedio especificado por pIndoubtData.

oNumIndoubtsTotal
Salida. El Número total de registros de transacciones dudosas disponibles en el momento de la invocación de API. Si el almacenamiento intermedio piIndoubtData es demasiado pequeño para contener todos los registros, oNumIndoubtsTotal será mayor que el total para oNumIndoubtsReturned. La aplicación puede volver a emitir la API a fin de obtener todos los registros.
Nota:
Este número puede cambiar entre invocaciones de la API como resultado de la resincronización automática o heurística de transacciones dudosas o como resultado de otras transacciones que pasan al estado de dudosas.

oReqBufferLen
Salida. Longitud de almacenamiento intermedio necesario para contener todos los registros de transacciones dudosas en el momento de la invocación de la API. La aplicación puede utilizar este valor para determinar el tamaño de almacenamiento intermedio necesario llamando a la API con pIndoubtData establecido en NULL. A continuación, este valor se puede utilizar para asignar el almacenamiento intermedio necesario y la API se puede emitir con pIndoubtData establecido en la dirección del almacenamiento intermedio asignado.
Nota:
El tamaño de almacenamiento intermedio necesario puede cambiar entre invocaciones de la API como resultado de la resincronización automática o heurística de transacciones dudosas o como resultado de otras transacciones que pasan al estado de dudosas. La aplicación puede asignar un almacenamiento intermedio más grande para ajustarse a ello.

timestamp
Salida. Especifica la hora en que la transacción ha pasado al estado de dudoso.

xid
Salida. Especifica el identificador XA asignado por el gestor de transacciones para identificar exclusivamente una transacción global.

dbalias
Salida. Especifica el alias de la base de datos en la que se ha encontrado la transacción dudosa.

applid
Salida. Especifica el identificador de aplicación asignado por el gestor de bases de datos para esta transacción.

sequence_no
Salida. Especifica el número de secuencia asignado por el gestor de bases de datos como una extensión de applid.

auth_id
Salida. Especifica el ID de autorización del usuario que ha ejecutado la transacción.

log_full
Salida. Indica si la transacción ha causado o no una condición de anotación cronológica completa. Los valores válidos son:

SQLXA_TRUE
Esta transacción dudosa ha causado una condición de anotación cronológica completa.

SQLXA_FALSE
Esta transacción dudosa no ha causado una condición de anotación cronológica completa.

connected
Salida. Indica si la aplicación está o no conectada. Los valores válidos son:

SQLXA_TRUE
La transacción está en un proceso de punto de sincronismo normal y está esperando la segunda fase de la confirmación en dos fases.

SQLXA_FALSE
La transacción quedó en estado dudoso en una anomalía anterior y ahora espera resincronización desde el gestor de bases de datos.

indoubt_status
Salida. Indica el estado de esta transacción dudosa. Los valores válidos son:

SQLXA_TS_PREP
La transacción está preparada. El parámetro conectado se puede utilizar para determinar si la transacción espera la segunda fase de un proceso de confirmación normal o si se ha producido un error y es necesario resincronizar con el gestor de transacciones.

SQLXA_TS_HCOM
La transacción se ha confirmado heurísticamente.

SQLXA_TS_HROL
La transacción se ha retrotraído heurísticamente.

SQLXA_TS_MACK
Falta el reconocimiento de confirmación desde un nodo de una base de datos particionada para la transacción.

SQLXA_TS_END
La transacción ha finalizado en esta base de datos. Esta transacción se puede reactivar, confirmar o retrotraer más adelante. También es posible que el gestor de transacciones haya encontrado un error y la transacción no se completará. Si éste es el caso, esta transacción necesita acciones heurísticas dado que puede estar reteniendo bloqueos e impedir que otras aplicaciones accedan a los datos.

Notas de utilización

Una aplicación típica realizará los pasos siguientes después de establecer la conexión actual con la base de datos o con el nodo coordinador de bases de datos particionadas:

  1. Llame a db2XaListIndTrans con piIndoubtData establecido en NULL. Esta acción devolverá valores en oReqBufferLen y oNumIndoubtsTotal.
  2. Utilice el valor que se devuelve en oReqBufferLen para asignar un almacenamiento intermedio. Es posible que este almacenamiento intermedio no sea suficientemente grande si existen transacciones dudosas adicionales debido a la invocación inicial de esta API para obtener oReqBufferLen. La aplicación puede proporcionar un almacenamiento intermedio más grande que oReqBufferLen.
  3. Determine si se han obtenido todos los registros de transacciones dudosas. Puede llevarlo a cabo comparando oNumIndoubtsReturned con oNumIndoubtTotal. Si oNumIndoubtsTotal es mayor que oNumIndoubtsReturned, la aplicación puede repetir los pasos anteriores.

Consulte también

"sqlxhfrg - Olvidar estado de transacción", "sqlxphcm - Confirmar una transacción dudosa" y "sqlxphrl - Retrotraer una transacción dudosa" en el manual Administrative API Reference.


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]