Замечания по выпуску
Выдает список всех неоднозначных транзакций для базы данных, с которой в
настоящее время установлено соединение.
Область действия
Эта функция 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
- Транзакция закончена для этой базы данных. Эта транзакция
впоследствии может быть вновь активирована, или для нее могут быть выполнены
принятие или откат. Возможно также, что менеджер транзакций обнаружит
ошибку и транзакция не будет выполнена. В таком случае для этой
транзакции требуются эвристические действия, поскольку она может удерживать
блокировки и мешать другим прикладным программам обращаться к данным.
Замечания по использованию
Типичная прикладная программа выполняет следующие шаги после установления
соединения с базой данных или с узлом координатора многораздельной базы
данных:
- Вызывает db2XaListIndTrans с пустым (NULL) значением параметра
piIndoubtData. Будут возвращены значения
oReqBufferLen и oNumIndoubtsTotal.
- Использует возвращенное значение oReqBufferLen, чтобы выделить
буфер. Этот буфер может оказаться недостаточно большим, если после
вызова этой функции API для получения значения oReqBufferLen
появились дополнительные неоднозначные транзакции. Прикладная программа
может выделить буфер больше, чем задано значением
oReqBufferLen.
- Определяет, все ли записи о неоднозначных транзакциях были
получены. Для этого она сравнивает значения
oNumIndoubtsReturned и oNumIndoubtTotal. Если
oNumIndoubtsTotal больше, чем oNumIndoubtsReturned,
прикладная программа может повторить описанные выше шаги.
Смотрите также
"sqlxhfrg - Забыть состояние транзакции", "sqlxphcm - Выполнить принятие
неоднозначной транзакции" и "sqlxphrl - Выполнить откат неоднозначной
транзакции" в руководстве Administrative API
Reference.
[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]