1 сентября 2008 г.

Блокировка транспортной системы


Столкнулся на днях с такой проблемой.

В результате деблокирования большого запроса в продуктивной системе произошло переполнение файловой системы /usr/sap/trans. Деблокирование запроса отвалилось с ошибкой. Транспортная система встала.

Решение:
Почистил файловую систему: забэкапил старые логи из директории /usr/sap/trans/log и удалил data-файлы ненужных запросов. Место освободилось. Но попытки обновить очередь продуктивной системы из транзакции STMS приводили к глухому зависанию этого процесса. Проверка: "Очередь -> Проверить -> Инструменты переноса" показывала, что программа tp запускается корректно. Системный журнал программы tp ("Перейти к -> ПрогрУпрПереносом (TP): системный журнал") показывал странные сообщения следующего типа:
WARNING: /usr/sap/trans/tmp/TC080828.<sid> is already in use (218),

I'm waiting 5 sec (20080828165520). My name: pid 2079 on <hostname> (<sid>adm)

На уровне операционной системы можно было наблюдать несколько висящих tp процессов, а в файловой системе /usr/sap/trans/tmp несколько файликов типа TC080828.<SID>, <SID>.LOB и т.д. Убивание процессов tp на уровне операционной системы проблему не решало: вновь запускаемые процессы так же подвисали. Полностью проблема решилась только после удаления файлов из файловой системы /usr/sap/trans/tmp и останова всех процессов tp. После этого очередь нормально обновилась и все ожидающие на добавление в очередь продуктивной системы запросы благополучно добавились.

На самом деле при импорте/деблокировании запроса в /usr/sap/trans/tmp создается файл статуса
<SID>.LOB. Он же является файлом блокировкой. После завершения процесса этот файл удаляется. Но в некоторых ситуациях (например, как в вышеописанной) этот файл не удаляется. Поэтому для дальнейшей работы процессов tp необходимо файл блокировок удалить (или хотя бы переименовать). Обычно, если размер файла <SID>.LOB равен 0, значит импорт завершился.

Автор: Шиболов Вячеслав Анатольевич


Комментариев нет:

Отправить комментарий