Привет, Алексей!

В свое время я озадачился вопросом: “Как выполнить резервное копирование базы данных АМК (BTRIEVE) не прерывая работу телефонистов?”. В результате родился вариант с использованием все той же утилиты BUTIL.NLM. Предлагаю вам короткое описание метода и набор программ, реализующих резервирование. Возможно, кому-нибудь они пригодятся.

Идея метода.

База данных BTRIEVE может работать в обычном режиме или режиме “Сontinuous operation mode” (далее по тексту - Режим СО). Смысл режима СО состоит в следующем. В режим СО можно перевести отдельную таблицу-файл или группу файлов. Для каждого файла, переведенного в режим СО, создается дельта файл. Имена дельта файлов совпадают с именам оригинальных файлов. Расширение дельта файлов – ^^^. Дельта файл размещается в каталоге оригинального файла. На время режима СО работа СУБД переключается на дельта файлы, оригинальные файлы становятся доступны для команд копирования файлов. После завершения копирования, обрабатываемые файлы необходимо перевести из режима СО в обычный режим. При этом BTRIEVE проецирует изменения, накопленные в дельта файлах на оригинальные файлы базы данных и удаляет дельта файлы.

Используя режим СО можно получить “моментальный снимок” нескольких таблиц и избежать возникновения неоднозначностей. В этом смысле BUTIL –SAVE… несколько хуже, для больших таблиц она выполняется не быстро. Насколько я понимаю, режим СО – основной документированный способ резервного копирования баз данных BTRIEVE.

Реализация метода.

Прилагаю набор файлов для реализации операции резервирования. Они написаны для нашего экземпляра АМК. Несложно переделать их для другой конфигурации файлов и сервера АМК. Необходимо изменить имена томов и каталогов.

В описываемом примере рабочая и резервная базы данных размещены на томах разных серверов. Имеются два АРМ Т настроенные на разные базы данных. Таблицы ORDERS и HISTORY в резервной базе пусты (они копируются в другой каталог). В случае поломки основной базы запускается резервный экземпляр АРМ Т с резервной базой данных. Это позволяет, по крайней мере, избежать полной остановки коммутатора и обслужить входящие вызовы во время “починки” основной рабочей базы данных.

Реализованы процедуры копирования:

Назначение файлов следующее:

Скопируйте файлы *.NCF и *.LIS в кататалог SYSTEM на сервере АМК.

Делайте резервную копию следующим образом.

  1. Переведите необходимый набор таблиц в режим СО, выполнив с консоли сервера соответствующий командный файл xxxCORUN.NCF.
  2. С рабочей станции скопируйте подлежащие резервированию файлы BTRIEVE (см файлы *.bat).
  3. Верните файлы-таблицы из режима СО в нормальный режим. Для этого с консоли сервера выполните соответствующий файл xxxCOEND.NCF.

ВНИМАНИЕ! Не забывайте исполнять пункты 1 и 3. Следите, чтобы копировались только те файлы, которые переведены в режим СО. Неисполнение этих требований приводит пусть не к фатальным, но все же неприятным последствиям.

Замечания. Имена файлов ежеквартальных отчетов специфичны для Владивостокской АМТС.

P.S.

Опробовано на BTRIEVE 6.10 и 6.15 в Novell 4.11.

Все-таки, несмотря на приличную надежность NOVELL NW & BTRIEVE в АМК, видимо, следует добавить штатную процедуру резервирования БД. Периодичность определять исходя из интенсивности изменений и тяжести последствий сбоя в работе и потери информации. Оперативные таблицы можно сохранять 1-2 раза в сутки. Прочие по мере внесения изменений.

В принципе, похожие вещи можно делать и при помощи утилиты NSUTIL. Возможно, она удобнее, но по ней у меня нет информации.

Спасибо, пока!.

Кузнецов Алексей kav@vmts.ru