Страница программного продукта FSOffice

Последняя версия продукта — 2007 (v 7.0)
от 20.08.2007
Автор: Новиков Максим Глебович

Обслуживание базы

(Чай, кофе?..)

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

Единственный путь сохранить гарантированно работоспособную версию базы заключается в прямом копировании файла базы в надежное место с отключением всех пользователей и остановкой SQL-сервера. Более подробно этот процесс расписан ниже.

Для прямого копирования файла базы необходимо предварительно закрыть все копии FSOffice а также другие приложения, работающие с базой данных, правильно завершив их работу. Затем следует остановить SQL-сервер InterBase (FireBird). Для этого открываем «Панель управления» операционной системы и запускаем «InterBase Server Manager» («Firebird 1.5 Server Manager»). Нажимаем кнопку Stop. Затем копируем файл базы BASE1.GDB в надёжное место. После копирования файла снова нажимаем Start.

Периодически следует производить «чистку» базы данных. База данных работает таким образом, что удаленные записи в её таблицах не удаляются окончательно, а просто помечаются, как удалённые. Поэтому с течением времени база сильно замусоривается. Для чистки базы данных следует запаковать и снова распаковать базу специальной утилитой, входящей в комплект SQL-сервера. Для этого создадим пакетный файл (с расширением .bat) следующего содержания:

set ISC_USER=SYSDBA
set ISC_PASSWORD=masterke
set MY_PATH=SERVER:C:\Program Files\Borland\InterBase\bin
del b.txt
del r.txt
del BASE1.GBK
"%MY_PATH%\gfix" BASE1.GDB -housekeeping 0
"%MY_PATH%\gfix" -shut -force 1 BASE1.GDB
"%MY_PATH%\gbak" BASE1.GDB BASE1.GBK -B -L -Y b.txt
"%MY_PATH%\gbak" BASE1.GBK BASE1.GDB -P 4096 -V -R -Y r.txt
Pause

Для Firebird путь к утилитам SQL-сервера «SERVER:C:\Program Files\Borland\InterBase\bin» замените на «SERVER:C:\Program Files\Firebird\Firebird_1_5\bin», где SERVER — сетевое имя компьютера, на котором расположен SQL-сервер.

Файлы b.txt и r.txt, которые появятся в каталоге базы после запуска этого пакетного файла, являются лог-файлами упаковки и восстановления базы соответственно. Файл BASE1.GBK — упакованная и очищенная копия файла базы данных. Утилита gfix в этом пакетном файле на всякий случай отключает автосборку мусора и останавливает сервер. Утилита gbak запаковывает и распаковывает базу.

Итак, для очистки базы от мусора, проделываем следующее.

1. Выполняем резервное копирование базы с остановкой SQL-сервера, как описано в начале этого параграфа (не забываем снова запустить SQL-сервер).

2. Запускаем вышеописанный пакетный файл на сервере из каталога файла базы. Внимательно читаем всё, что пишет нам пакетный файл в чёрном окне.

После завершения работы файла размер базы должен существенно уменьшиться.

В случае подключения пользователей к базе во время работы пакетного файла возможно ее повреждение. В этом случае выполняем действия по отключению пользователей и остановки SQL-сервера, описанные в начале параграфа, и копируем сохраненный в надёжном месте файл базы на место поврежденного. Снова запускаем SQL-сервер и повторяем попытку запуска пакетного файла.

<<<

>>>

Hosted by uCoz