Администрирование Lotus Notes 4.1x и Lotus Domino 4.5

Серверная задача Database fixup


FIXUP       Серверная задача Database fixup проверяет находящиеся на сервере базы данных на наличие в них "поврежденных" видов, папок и документов и удаляет те виды, папки и документы, в которых были обнаружены повреждения.

Наиболее часто повреждение базы данных случается:

·        при неправильном завершении операционной системы (аппаратная перезагрузка компьютера, сбой питания, крах операционной системы или иные неподходящие процедуры ее закрытия),

·        при принудительном завершении ("снятии") сервера Notes средствами операционной системы,

·        из-за неправильной работы с базой данных из программы, использующей Notes API.

Во время своей работы сервер Notes открывает запрашиваемые пользователями базы данных и в течение некоторого времени поддерживает их в открытом состоянии. Некоторые системные базы данных, например, LOG.NSF, MAIL.BOX или NAMES.NSF, открываются при старте сервера и остаются в открытом состоянии до его завершения. При штатном завершении сервера (командой консоли Quit или Exit) последний "закроет" все открытые им базы данных. Однако при нештатном завершении сервера некоторые из баз могут остаться в незакрытом состоянии.

Когда вы снова запускаете сервер, он самостоятельно запускает задачу FIXUP в фоновом режиме. Задача FIXUP

прежде всего обрабатывает базу "Протокол работы сервера" (LOG.NSF), чтобы в нее можно было заносить информацию о возможных последующих обнаруженных повреждениях и выполненных "исправлениях". Затем задача FIXUP

обрабатывает "незакрытые" базы данных. Для каждой "незакрытой" базы она:

·        проверяет каждое поле в каждом документе на наличие повреждений;

·        удаляет поврежденные документы, но так, что эти удаления не повлекут удалений соответствующих документов в других репликах данной базы.


Если задача FIXUP "не успеет" обработать "незакрытые" базы до того, как запустится сервер, а пользователи попытаются открыть такую базу, они получат сообщение "This database cannot be opened because a consistency check of it is in progress."



При старте сервера может быть запущено несколько параллельно работающих задач FIXUP, чтобы сократить общее время обработки поврежденных баз. По умолчанию при старте запускается до двух задач FIXUP в расчете на каждый имеющийся на сервере процессор. Максимальное количество одновременно запускаемых при старте сервера задач FIXUP может задаваться переменной Fixup_Tasks в NOTES.INI. Фактическое число выполненных задач обычно меньше заданного значения Fixup_Tasks. Например, если Fixup_Tasks = 4, но только одной базе данных имеются повреждения, выполнится только одна задача FIXUP.

Обратите внимание на следующие моменты. Во-первых, при автоматическом запуске задача FIXUP не выполняет проверку поврежденных видов и папок в базах. Во-вторых, база данных, которая повреждена, но "корректно закрыта", вообще не обрабатывается при автоматическом запуске задачи FIXUP.

В таких случаях администратору приходится запускать задачу FIXUP "вручную". Поводом для этого может послужить получение пользователем сообщения о повреждении базы, обнаружение пользователем некорректной информации в виде базы (невозможно открыть вид, в колонках вида "непонятные" символы, информация в документе и в виде не синхронна, в базе нет документов, представленных в виде) или обнаружение администратором соответствующие сообщения в базе "Протокол работы сервера" (LOG.NSF). Приведем некоторые сообщения, появляющиеся в LOG.NSF и свидетельствующие о наличии повреждений в базах:

·        Поврежденный документ

                        ·        "Document NT <document number> in database <database name> is damaged:"



                        ·        " Document is damaged or obsolete (unrecognized data type)"

                        ·        "Document is damaged or obsolete (unrecognized field)"

·        Некорректно (в "физическом" смысле) удаленный документ

                        ·        "Document NT <document number> in database <database name> has been deleted"

·        Разрушенный вид

                        ·        "Page format is incorrect"

                        ·        "Invalid CNO vector - position == 0"

                        ·        "Container integrity has been lost - rebuild".

При запуске "вручную" FIXUP способна обрабатывать не только поврежденные документы, но и поврежденные виды или папки.

Формат для запуска "вручную": LOAD FIXUP [имя_базы] [-L] [-V] [-I] [-N] .

·        Имя_базы

- необязательный параметр. Он определяет имя базы данных, которую необходимо обработать. Если вы не указали базу данных, FIXUP обрабатывает все базы данных на сервере.



·        -L требует протоколировать информацию о каждой базе, обработанной FIXUP, даже если в базе отсутствуют повреждения. Без этого параметра FIXUP протоколирует только обнаруженные и "исправленные" ею повреждения.

·        -V

"запрещает" задаче FIXUP проверять и "исправлять" виды (но не папки) - проверяются документы и папки. Это сокращает общее время работы программы.

·        -I   "заставляет" задачу FIXUP проверять только те документы, которые изменились с момента предшествующего запуска задачи.

·         -N "запрещает" задаче FIXUP удалять поврежденные документы - будет происходить лишь обнаружение повреждений, но "без грубого лечения посредством удаления всего испорченного".

FIXUP не может обрабатывать уже открытые базы данных, и базы данных не могут быть открыты, когда FIXUP "работает" на них. Учтите, что системные базы данных (например, LOG.NSF, MAIL.BOX или NAMES.NSF) при работе сервера всегда открыты.

При желании можно запускать задачу FIXUP по расписанию. Общая рекомендация в этом случае - один раз в неделю в "не пиковые" часы.

Остается рассмотреть вопрос о последствиях применения задачи FIXUP. Если задача удаляет поврежденный индекс вида, "ничего страшного" не происходит. Этот индекс вида будет построен сервером заново - при попытке пользователя открыть вид, "ночном" выполнении задачи UPDALL

или в иных ситуациях. Если же задача FIXUP удаляет поврежденный документ, этот документ "не восстановится автоматически". Для его восстановления необходимо иметь либо резервную копию базы, выполненную средствами операционной системы, либо реплику этой базы на другом сервере Notes. В первом случае придется со станции вручную перенести необходимые документы через буфер обмена из резервной копии в восстанавливаемую базу. Во втором случае поможет механизм репликаций. Задача FIXUP всегда удаляет поврежденный документ "без следов", так что при репликации он не влечет удаления соответствующего документа в реплике базы на другом сервере. Зато "нормальный" документ из реплики на другом сервере при репликации должен добавляться в восстанавливаемую реплику, как новый документ. Однако при этом возможны некоторые нюансы, о которых вы узнаете в главе 6.


Содержание раздела