Содержание
gfix
Версии сервера
Все
Формат
gfix [параметры] <база данных>;
Описание
Эта утилита является одним из основных инструментов администратора БД. Утилита gfix позволяет:
- Выполнять принудительную чистку (sweep) базы данных;
- Изменять интервал автоматической чистки;
- Закрывать базу данных для получения монопольного доступа, и затем снова открывать ее;
- Переводить базу в режимы «чтение/запись» или «только чтение»;
- Переключаться между синхронным и асинхронным вводом (Forced Writes);
- Изменять диалект БД;
- Устанавливать размер кэша;
- Отыскивать повисшие транзакции и отменять или подтверждать их;
- Активировать или удалять теневые копии;
- Производить ремонт поврежденных баз данных.
Все параметры утилиты приведены в следующей таблице
Параметр | Описание |
---|---|
-ac[tivate] <теневая копия> | Параметр предназначен для активации теневой копии. <Теневая копия> -адрес и имя файла теневой копии (или первого из файлов). |
-at[tach] n | Дополнительный параметр к -shut. Предназначен для запрета новых соединений с БД. n указывает количество секунд, через которое произойдет отключение БД. Отключение отменится, если к этому времени еще останутся активные соединения. |
-b[uffers] n | Устанавливает новый размер кэша (буфера) БД в страницах. n -количество страниц. По умолчанию, кэш = 75 страниц. |
-ca[che] n | Параметр зарезервирован для будущих версий и не используется. |
-c[ommit] {ID or all} | Завершает подтверждением зависшую транзакцию с идентификатором ID, или все зависшие транзакции (all) |
-force n | Дополнительный параметр к -shut. Предназначен для принудительного закрытия базы данных. n указывает количество секунд, через которое произойдет закрытие. Если остались активные пользователи, они отключатся, последние результаты их работы будут потеряны. Такое средство нужно применять с осторожностью, как последнюю возможность. |
-f[ull] | Используется вместе с -v для проверки структур записей и таблиц; освобождает неназначенные фрагменты записей. |
-h[ousekeeping] n | Изменяет интервал транзакций для автоматической чистки sweep (по умолчанию 20 000). n устанавливает новый интервал. Если n=0, автоматическая чистка запрещена. |
-i[gnore] | Игнорировать ошибки контрольных сумм при проверке или чистке. |
-k[ill] <база данных> | Удаляет все неиспользуемые теневые копии базы данных. |
-l[ist] | Показывает ID всех зависших транзакций. Также показывает, что произойдет при наличии зависших limbo-транзакций и использования опции -t. |
-m[end] | Помечает разрушенные записи как неиспользуемые. |
-mo[de] {readwrite or read only} | Устанавливает режим БД. Может быть read write (чтение-запись, по умолчанию), или read only (только чтение). |
-n[o_update] | Используется вместе с -v для проверки разрушенных или неразмещенных структур. Если таковые есть, они отобразятся в сообщении, но не будут исправлены. |
-o[nline] | Открывает закрытую после -shut базу данных. |
-pa[ssword] <пароль> | Пароль пользователя SYSDBA или владельца базы данных для работы с gfix. |
-p[rompt] | Используется вместе с -l. Выводит подсказки при восстановлении транзакций. |
-r[ollback] {ID or all} | Завершает откатом зависшую транзакцию с идентификатором ID, или все зависшие транзакции (all) |
-sweep | Запускает принудительную чистку БД. |
-s[ql_dialect] n | Изменяет диалект базы данных. n может быть 1 или 3. |
-sh[ut] | Закрывает базу данных. Используется с одним из дополнительных параметров -attach, -force или -tran. |
-t[wo_phase] {ID or all} | Автоматическое двухфазное восстановление limbo транзакции с номером ID, или всех транзакций (all). |
-tr[an] n | Дополнительный параметр к -shut. Предназначен для запрета запуска новых транзакций. n указывает количество секунд, через которое произойдет отключение БД. Отключение отменится, если к этому времени еще останутся активные транзакции. |
trusted | использовать trusted авторизацию |
-use {full or reserve} | Включает 100% заполнение страниц БД (full) или 80% заполнение по умолчанию (reserve). 100%-е заполнение имеет смысл для баз только для чтения. |
-user <имя пользователя> | Имя администратора или владельца базы данных для работы с gfix. |
-v[alidate] | Определяет и показывает неназначенные страницы БД. То есть, созданные, но не назначенные для каких либо структур данных. |
-w[rite] {sync or async} | Переключает режимы синхронной / асинхронной записи Forced Writes. |
-z | Выводит версию Firebird и утилиты gfix. |
Примеры
Чистка sweep происходит в фоновом режиме и может выполняться параллельно работе пользователей. Этот способ более предпочтителен, чем чистка gbak при восстановлении БД. Утилита gbak не делает полной чистки, так как остаются версии удаленных записей и записей отмененных транзакций. Принудительную чистку можно сделать так:
gfix -sweep c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Чистка базы данных происходит автоматически через определенное количество (по умолчанию 20 000) транзакций. Расчет интервала делается из старейшей транзакции, зарегистрированной в области TIP (Инвентарная страница транзакций), и из старейшей активной транзакции. Когда инвентарный номер старейшей активной транзакции окажется больше на указанный интервал, чем инвентарный номер старейшей зарегистрированной в TIP транзакции, произойдет автоматический запуск чистки. Изменить интервал на 10 000, например, можно так:
gfix -h 10000 c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Если же вместо 10 000 указать 0, автоматическая чистка для данной БД вообще будет отменена. Как уже говорилось, чистка не требует монопольного доступа к базе данных, однако если БД очень большая, и много пользователей интенсивно с ней работают, чистка может заметно замедлить работу с БД. В этом случае, перед чисткой рекомендуется вначале отключить базу данных.
Отключение базы данных делается командой -shut с одним из трех дополнительных параметров. Чтобы безусловно отключить базу данных через 10 минут, выполните команду:
gfix -sh -force 600 c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Однако такой радикальный способ рекомендуется использовать с осторожностью: пользователи, которые на этот момент продолжали работу с БД, потеряют результаты своей работы. Вначале вместо «-force» лучше попробовать более «мягкие» дополнительные параметры «-attach» или «-tran».
После того, как база данных закрыта, и с ней выполнены все необходимые действия, ее нужно открыть командой
gfix -o c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Кэш (или буфер) - это оперативная память, выделяемая сервером для работы с базой данных. Операции в оперативной памяти происходят гораздо быстрее, чем если данные постоянно считываются с диска. Размер кэша указывается в страницах БД. Если размер страницы установлен 8192, то кэш в 5000 страниц займет примерно 40 мегабайт ОЗУ. По умолчанию, Firebird использует кэш в 75 страниц. Если сразу много пользователей одновременно обращаются к базе данных, может случиться, что серверу не хватит выделенной оперативной памяти. В этом случае он начнет работать с диском, что замедлит производительность БД. Изменить размер кэша для базы данных на 300 страниц можно так:
gfix -b 300 c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Другим способом установить размер кэша по умолчанию для всех вновь создаваемых БД, является изменение конфигурационного файла firebird.conf, который находится в папке Firbird.
Это обычный текстовый файл, в котором все параметры закомментированы (первым символом идет «#»). Нужно снять комментарий, и установить новое значение нужного параметра. То есть, вместо
#DefaultDbCachePages 2048
указать
DefaultDbCachePages 9999
Однако более предпочтительным способом для этих целей является утилита gfix, так как она позволяет установить собственный размер кэша для каждой базы данных. Если какой то БД пользуются реже, размер кэша для нее можно оставить по умолчанию, или даже уменьшить.
База данных может работать в одном из двух режимов доступа: только для чтения, или для чтения / записи (по умолчанию). Если вам понадобилось запретить пользователям модифицирование данных, вы можете поменять режим командой:
gfix -mo readonly c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Операции изменения режима занимают время! Не забудьте потом вернуть режим read_write, иначе пользователи не смогут вносить изменения в БД.
Режимы Forced Writes требуют особого пояснения. Forced Writes, или режим синхронного ввода, определяет, как будет происходить работа с БД. При включенном Forced Writes добавление новых записей, удаление старых, появление новых версий записей сразу же физически сохраняется на диске. При отключенном синхронном вводе сервер Firebird возлагает это на операционную систему: физическое сохранение изменений происходит позже - когда переполнится буфер, или когда ОС решит, что компьютер долго простаивает. Отключение Forced Writes следует делать лишь на очень надежных машинах, с обязательным источником бесперебойного питания (UPS). Ведь может случиться, что физической записи на диск не происходит целый день, а при сбое системы или отключении питания потеряются результаты всей работы! Отключенный режим немного увеличивает скорость работы с БД, однако данные становятся менее защищенными.
По умолчанию, все БД работают с включенным Forced Writes и отключать этот режим не рекомендуется. Если все же вы не удовлетворены производительностью БД, и при этом стопроцентно уверены в своем серверном ПК, можете попробовать отключить Forced Writes командой:
gfix -w async c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
Команда
gfix -v c:\DATABASES\FIRST.fdb -USER sysdba -pa masterkey
выведет на экран все неназначенные страницы, которые являются мусором. Если на экран ничего не вышло, значит, таких страниц в БД нет.
Если база данных разрушилась, можно вместо нее активировать теневую копию командой
gfix - ac d:\DATABASES\FIRST.shd-USER sysdba -pa masterkey
Обсуждение