Замечания по выпуску


38.7 db2XaListIndTrans (новый API, заменяющий sqlxphqr)

db2XaListIndTrans - Получить список неоднозначных транзакций

Выдает список всех неоднозначных транзакций для базы данных, с которой в настоящее время установлено соединение.

Область действия

Эта функция API влияет только на узел, на котором она вызвана.

Авторизация

Одни из следующих:

Необходимое соединение

База данных

Файл включения API

db2ApiDf.h

Синтаксис API C



   /* Файл: db2ApiDf.h */
   /* Функция API: Получить список неоднозначных транзакций */
   /* ... */
   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;

Параметры API

versionNumber
Входной. Задает уровень версии и выпуска для структуры, передаваемой во втором параметре pParmStruct.

pParmStruct
Входной. Указатель на структуру db2XaListIndTransStruct.

pSqlca
Выходной. Указатель на структуру sqlca. Дополнительную информацию об этой структуре смотрите в руководстве Administrative API Reference.

piIndoubtData
Входной. Указатель на поставляемый прикладной программой буфер, в который будут возвращена информация о неоднозначных транзакциях. Эта возвращаемая информация имеет формат db2XaRecoverStruct. Прикладная программа может просмотреть список неоднозначных транзакций, начиная с адреса, указанного в этом параметре, и используя размер структуры db2XaRecoverStruct.

Если этот параметр имеет пустое значение, DB2 вычислит необходимый размер буфера и вернет его значение в oReqBufferLen. oNumIndoubtsTotal будет содержать общее число неоднозначных транзакций. Прикладная программа может выделить буфер нужного размера и вновь вызвать эту функцию API.

oNumIndoubtsReturned
Выходной. Число записей о неоднозначных транзакциях, возвращенных в буфере, указанном в pIndoubtData.

oNumIndoubtsTotal
Выходной. Общее число записей о неоднозначных транзакциях, доступных в момент вызова этой функции API. Если буфер piIndoubtData недостаточно большой, чтобы вместить все эти записи, значение oNumIndoubtsTotal будет больше, чем oNumIndoubtsReturned. Прикладная программа может повторно вызвать эту функцию API, чтобы получить все записи.
Прим.:
Между вызовами API это число может измениться - в результате автоматической или эвристической ресинхронизации неоднозначных транзакций или из-за того, что другие транзакции окажутся в неоднозначном состоянии.

oReqBufferLen
Выходной. Длина буфера, необходимая для вмещения всех записей о неоднозначных транзакциях, доступных в момент вызова этой функции API. Прикладная программа может использовать это значение, чтобы определить требуемый размер буфера, вызвав эту функцию API с пустым значением параметра pIndoubtData. Затем она может использовать это значение для выделения требуемого буфера и вновь вызвать эту функцию API, задав в pIndoubtData адрес выделенного буфера.
Прим.:
Требуемый размер буфера может измениться между вызовами API - в результате автоматической или эвристической ресинхронизации неоднозначных транзакций или из-за того, что другие транзакции окажутся в неоднозначном состоянии. Учитывая это, прикладная программа может выделять буфер большего размера.

отметка времени (timestamp)
Выходной. Указывает время, когда транзакция перешла в неоднозначное состояние.

xid
Выходной. Указывает идентификатор XA, присвоенный менеджером транзакций для однозначной идентификации глобальной транзакции.

dbalias
Выходной. Указывает алиас базы данных, в которой обнаружена эта неоднозначная транзакция.

applid
Выходной. Указывает идентификатор прикладной программы, присвоенный менеджером баз данных этой транзакции.

sequence_no
Выходной. Указывает порядковый номер, присвоенный менеджером баз данных в качестве расширения для applid.

auth_id
Выходной. Указывает ID авторизации пользователя, выполнявшего эту транзакцию.

log_full
Выходной. Указывает, вызвала ли эта транзакция условие переполнения журнала. Допустимые значения:

SQLXA_TRUE
Эта неоднозначная транзакция вызвала условие переполнения журнала.

SQLXA_FALSE
Эта неоднозначная транзакция не вызвала условия переполнения журнала.

connected
Выходной. Указывает, соединена ли эта прикладная программа. Допустимые значения:

SQLXA_TRUE
Для этой транзакции выполняется нормальная обработка точек синхронизации и она ожидает второй фазы двухфазного принятия.

SQLXA_FALSE
Эта транзакция осталась неоднозначной из-за более ранней ошибки и теперь она ожидает ресинхронизации менеджером транзакций.

indoubt_status
Выходной. Указывает состояние этой неоднозначной транзакции. Допустимые значения:

SQLXA_TS_PREP
Транзакция подготовлена. Можно использовать параметр connected, чтобы определить, ожидает транзакция второй фазы нормальной обработки принятия или возникла ошибка и требуется ресинхронизация менеджером транзакций.

SQLXA_TS_HCOM
Для транзакции выполнено эвристическое принятие.

SQLXA_TS_HROL
Для транзакции выполнен эвристический откат.

SQLXA_TS_MACK
Транзакция не получила подтверждение принятия от узла в многораздельной базе данных.

SQLXA_TS_END
Транзакция закончена для этой базы данных. Эта транзакция впоследствии может быть вновь активирована, или для нее могут быть выполнены принятие или откат. Возможно также, что менеджер транзакций обнаружит ошибку и транзакция не будет выполнена. В таком случае для этой транзакции требуются эвристические действия, поскольку она может удерживать блокировки и мешать другим прикладным программам обращаться к данным.

Замечания по использованию

Типичная прикладная программа выполняет следующие шаги после установления соединения с базой данных или с узлом координатора многораздельной базы данных:

  1. Вызывает db2XaListIndTrans с пустым (NULL) значением параметра piIndoubtData. Будут возвращены значения oReqBufferLen и oNumIndoubtsTotal.
  2. Использует возвращенное значение oReqBufferLen, чтобы выделить буфер. Этот буфер может оказаться недостаточно большим, если после вызова этой функции API для получения значения oReqBufferLen появились дополнительные неоднозначные транзакции. Прикладная программа может выделить буфер больше, чем задано значением oReqBufferLen.
  3. Определяет, все ли записи о неоднозначных транзакциях были получены. Для этого она сравнивает значения oNumIndoubtsReturned и oNumIndoubtTotal. Если oNumIndoubtsTotal больше, чем oNumIndoubtsReturned, прикладная программа может повторить описанные выше шаги.

Смотрите также

"sqlxhfrg - Забыть состояние транзакции", "sqlxphcm - Выполнить принятие неоднозначной транзакции" и "sqlxphrl - Выполнить откат неоднозначной транзакции" в руководстве Administrative API Reference.


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]