Этот сайт посвящается администрированию баз данных OpenEdge Progress.
Не корысти ради, а познания для!

С уважением,
Валерий Башкатов
Сайт разработан при участии компании Progress Technologies, официального дистрибьютора Progress Software Corp. на территории стран СНГ и Латвии.

RSS RSS подписка на обновления сайта

Поиск по сайту

Лучшие материалы

Orphus System
На сайте функционирует система коррекции ошибок. Обнаружив неточность в тексте, выделите её и нажмите Ctrl+Enter



Результаты опроса: Нужны ли книги по Progress OpenEdge на русском языке? (опрос проводился с мая 2009 по ноябрь 2010)

Да, нужны. Потому что будет легче понять материал - 268
Нет, не нужны. Достаточно материалов на английском языке - 10
Не знаю, мне всё равно - 6

А знаете ли вы что..



Что произойдет если пользователь будет «убит»?



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

Если будет обнаружено, что у пользователя из таблицы контроля пользователей нет активного процесса, то он будет отключен от базы данных и в журнал базы будет записано сообщение 2527:

Disconnecting dead user . (2527)

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

User died holding shared memory locks. (2522)
User died with buffers locked. (2523)

Если при этом разделяемая память или буферный латч останутся в противоречивом состоянии, то сервер выполнит аварийный останов базы данных, чтобы гарантировать её целостность. В лог базы данных запишется сообщение 2249, после чего начнется отключение всех пользователей, а затем и завершение работы самого сервера:

Begin ABNORMAL shutdown code n  (2249).

Номер кода в этом сообщении предназначен для будущего использования и в настоящее время не имеет никакого значения.

Подобный аварийный останов не говорит о том, что база данных повреждена, наоборот, он предотвращает возможные искажения данных в базе. После перезапуска базы данных отработает механизм Crash Recovery, после чего базу можно продолжать использовать в нормальном режиме.

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

System Error: redundant lwake user <n> latch <x>

Эта ошибка также не указывает на повреждения в базе данных.

События, которые могут привести к неправильному завершению работы процесса:

    1. Процесс получил kill-сигнал, отличный от SIGHUP.

    2. Был отключен терминал в то время, когда была активна OpenEdge-сессия.

    3. Работа процесса была завершена из-за системной ошибки.

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

Примеры.

Старт сервера базы данных с сетевыми параметрами:

proserve db-name -S <port number> -H localhost

Старт пользовательской сессии в качестве локального «дистанционного» клиента на той же машине:

mpro db-name -S <port number> -H localhost

Примечание: могут возникнуть различия в производительности между прямым подключением к разделяемой памяти и подключением по TCP. Прямое использование разделяемой памяти быстрее, т.к. потоки данных не идут через протокол TCP.






Главная |  Статьи |  Книги |  Гостевая |  Ссылки |  От автора |  Download ProKb


������ ᠩ� pr Online ProKB Blogger Welcome to Russian Progress Users Group at Facebook Welcome to Russian Progress Users Group at LinkedIn
© 2009 - 2011 Все права на материалы, находящиеся на сайте www.openedge.ru, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
При любом использовании материалов сайта ссылка на источник обязательна.