Notas sobre o Release


37.7 db2XaListIndTrans (nova API que sobrepõe sqlxphqr)

db2XaListIndTrans - Lista Transações Duvidosas

Fornece uma lista de todas as transações duvidosas para os bancos de dados atualmente conectados.

Escopo

Esta API afeta apenas o nó no qual ela é emitida.

Autorização

Um dos seguintes:

Conexão Requerida

Banco de Dados

Arquivo de Inclusão da API

db2ApiDf.h

Sintaxe da API C



   /* Arquivo: db2ApiDf.h */
   /* API: Listar Transações Duvidosas */
   /* ... */
   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 da API

versionNumber
Entrada. Especifica a versão e o nível da estrutura passada como o segundo parâmetro, pParmStruct.

pParmStruct
Entrada. Um indicador para a estrutura db2XaListIndTransStruct.

pSqlca
Saída. Um indicador para a estrutura sqlca. Para obter maiores informações sobre esta estrutura, consulte a publicação Administrative API Reference.

piIndoubtData
Entrada. Um indicador para o buffer fornecido no aplicativo de onde o dado duvidoso será retornado. O dado duvidoso está no formato db2XaRecoverStruct. O aplicativo pode atravessar a lista de transações duvidosas utilizando o tamanho da estrutura db2XaRecoverStruct, iniciando no endereço fornecido por este parâmetro.

Se o valor for NULL, o DB2 irá calcular o tamanho do buffer requerido e retornar esse valor no oReqBufferLen. oNumIndoubtsTotal conterá o número total de transações duvidosas. O aplicativo pode alocar o tamanho de buffer requerido e emitir a API novamente.

oNumIndoubtsReturned
Saída. O número de registros de transações duvidosas retornado no buffer especificado pelo pIndoubtData.

oNumIndoubtsTotal
Saída. O número Total de registros de transações duvidosas disponível na hora da chamada da API. Se o buffer piIndoubtData for muito pequeno para conter todos os registros, o oNumIndoubtsTotal será maior que o total para o oNumIndoubtsReturned. O aplicativo deve emitir novamente a API para obter todos os registros.
Nota:
Este número deve alterar o meio das chamadas de API como um resultado da nova sincronização de transação duvidosa automática ou heurística, ou como um resultado de outras transações entrando no estado duvidoso.

oReqBufferLen
Saída. Tamanho de buffer requerido para manter todas os registros de transações duvidosas na hora da chamada da API. O aplicativo pode utilizar este valor para determinar o tamanho de buffer requerido chamando a API com pIndoubtData definido como NULL. Este valor pode então ser utilizado para alocar o buffer requerido e a API pode ser emitida com pIndoubtData definida para o endereço do buffer alocado.
Nota:
O tamanho de buffer requerido pode se alterar entre as chamadas de API como um resultado da nova sincronização de transação duvidosa automática ou heurística, ou como um resultado de outras transações entrando no estado duvidoso. Por isso, o aplicativo pode alocar um buffer maior para contabilizar.

timestamp
Saída. Especifica o tempo quando a transação entrou no estado incerto.

xid
Saída. Especifica o identificador XA assinalado pelo gerenciador de transação para identificar unicamente uma transação global.

dbalias
Saída. Especifica o alias do banco de dados onde a transação incerta se encontra.

applid
Saída. Especifica o identificador de aplicativos assinalado pelo gerenciador de banco de dados para esta transação.

sequence_no
Saída. Especifica o número de seqüência designado pelo gerenciador de banco de dados como uma extensão para a applid.

auth_id
Saída. Especifica o Id de autorização do usuário que executou a transação.

log_full
Saída. Indica se esta transação causou ou não uma condição de estouro de log. Os valores válidos são:

SQLXA_TRUE
Esta transação incerta causou uma condição de estouro de log.

SQLXA_FALSE
Esta transação incerta não causa uma condição de estouro de log.

connected
Saída. Indica se o aplicativo está ou não conectado. Os valores válidos são:

SQLXA_TRUE
A transação está sofrendo um processamento normal do ponto de sincronismo e está aguardando a segunda fase do commit de duas fases.

SQLXA_FALSE
A transação tornou-se incerta por uma falha anterior, e está agora aguardando por uma nova sincronização do gerenciador de transação.

indoubt_status
Saída. Indica o status desta transação incerta. Os valores válidos são:

SQLXA_TS_PREP
A transação está preparada. O parâmetro conectado pode ser utilizado para determinar se a transação está aguardando uma segunda fase do processamento normal de commit ou se ocorreu um erro e será necessário uma nova sincronização com o gerenciador de transação.

SQLXA_TS_HCOM
A transação efetuou o commit heuristicamente.

SQLXA_TS_HROL
A transação sofreu rollback heuristicamente.

SQLXA_TS_MACK
Falta na transação o reconhecimento do commit de um nó em um banco de dados particionado.

SQLXA_TS_END
A transação foi encerrada neste banco de dados. Esta transação deve ser ativada novamente, efetuar o commit ou sofrer o rollback em um momento posterior. Também é possível que o gerenciador de transações encontre um erro e a transação não seja concluída. Se o caso for esse, esta transação vai precisar de ações heurísticas, porque deve suspender os bloqueios impedindo o acesso aos dados de outros aplicativos.

Notas de Uso

Um aplicativo típico executará as seguintes etapas após a definição da conexão atual do banco de dados ou do nó coordenador do banco de dados particionado:

  1. Chame db2XaListIndTrans com piIndoubtData definida como NULL. Isto irá retornar valores em oReqBufferLen e em oNumIndoubtsTotal.
  2. Use o valor retornado no oReqBufferLen para alocar um buffer. Esse buffer pode não ser suficientemente grande se existirem transações incertas adicionais devido à chamada inicial desta API para obter o oReqBufferLen. O aplicativo pode fornecer um buffer maior que o oReqBufferLen.
  3. Determine se todos os registros duvidosos da transação foram obtidos. Isto pode ser feito comparando-se oNumIndoubtsReturned com oNumIndoubtTotal. Se o oNumIndoubtsTotal for maior que o oNumIndoubtsReturned, o aplicativo poderá repetir as etapas anteriores.

Consulte também

"sqlxhfrg - Esquecer Status da Transação", "sqlxphcm - Fazer Commit de uma Transação Incerta" e "sqlxphrl - Fazer Roll Back de uma Transação Incerta" na seção Administrative API Reference.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]