Notas sobre o Release
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:
- Chame db2XaListIndTrans com piIndoubtData definida
como NULL. Isto irá retornar valores em oReqBufferLen e em
oNumIndoubtsTotal.
- 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.
- 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 ]