. ! .
Примеры:
gfix -sh -at 300
инициирует закрытие базы данных, что произойдет через 5 минут, если все пользователи отключатся от базы данных.
gfix -sh -f 600
отключит всех пользователей от системы через 10 минут. Любые еще выполняющиеся транзакции будут отменены, а пользователи потеряют проделанную и неподтвержденную работу.
Когда база данных находится в закрытом состоянии, пользователь SYSDBA или ее владелец могут соединиться с ней и получить исключительный доступ. Однако остерегайтесь следующих моментов:
* если владелец или SYSDBA были соединены с базой данных в момент ее закрытия, то сервер не будет блокировать другие подключения к базе данных, даже когда выполнено закрытие;
* когда владелец или SYSDBA соединяется с базой данных после ее закрытия, то другому будет заблокирован к ней доступ - это хорошо. Если тот же пользователь захочет снова к ней подключиться, ему это будет разрешено, что уже не столь хорошо[154].
Это накладывает ответственность на SYSDBA или на владельца, кому нужен исключительный доступ гарантировать, что ни они, ни кто-либо другой не будет соединен с базой данных с использованием визуального административного инструмента, монитора SQL, другого инструмента командной строки или даже другого режима gfix, например. Когда вы получили исключительный доступ, сохраните его исключительным - не запускайте более одного приложения[155].
Используйте gfix -o[nline] для отмены закрытия и перевода базы данных в оперативное состояние для доступа множества пользователей. Вы также можете применять это для отмены закрытия по расписанию.
Имейте в виду, что останов или запуск сервера не оказывает никакого воздействия на состояние закрытия любой базы данных. Если база данных закрыта, когда сервер остановлен, она будет оставаться в закрытом состоянии и при последующем запуске сервера. Останов сервера не переведет никакую базу данных в закрытое состояние.
! ! !
ПРИМЕЧАНИЕ. Если вы скопировали файл базы данных, которая находится в закрытом состоянии, а затем пытаетесь соединиться с копией, то копия будет в закрытом состоянии.
. ! .
Изменение установок базы данных
Множество режимов команды gfix позволяет установить или изменить различные установки базы данных. Для выполнения таких команд требуются полномочия SYSDBA или владельца базы данных, а также исключительный доступ.
Установка размера кэша по умолчанию
Использование gfix является предпочтительным способом установки размера кэша по умолчанию для базы данных. Важно помнить некоторые моменты.
* Если вы увеличиваете размер страницы, размер кэша соответственно увеличится. Вы должны гарантировать, что вы получите количество физической памяти машины в соответствии с измененным размером кэша. Когда кэш достигнет размера, который слишком велик для хранения в RAM, он начнет записываться на диск, что полностью уберет все преимущества использования кэша.
* В Классическом сервере каждый клиент получает свой собственный кэш. Даже размер кэша по умолчанию в 75 страниц будет слишком большим, если база данных использует большой размер страницы.
Синтаксис:
gfix -b[uffers] n база-данных
Здесь n- размер резервируемого кэша (количество буферов с размером, равным размеру страницы).
Пример:
gfix -b 5000 d:\data\accounts.fdb
Если размер страницы базы данных 8192, то кэш в 5000 страниц займет примерно 40 Мбайт.
В настоящий момент переключатель -с[ache] n не используется; он зарезервирован для дальнейших реализаций.
Изменение режима доступа
Используйте вариант gfix -mo[de] для переключения режима доступа любого соединения с базой данных между "только для чтения" и "для чтения/записи". В базу только для чтения нельзя совсем выполнить запись - даже пользователю SYSDBA, ее владельцу или любому серверному процессу.
Синтаксис:
gfix -mo[de] {read_write | read_only} база-данных
Для переключения базы данных из режима чтения/записи в режим только для чтения:
./gfix -mo read_only /data/accounts.fdb
Для переключения базы данных из режима только для чтения в режим чтения/записи:
./gfix -mo read_write /data/accounts.fdb
Изменение диалекта базы данных
С переключателем -s[qi_diaiect] вы можете изменить диалект! базы данных на родной для Firebird диалект 3. После этого база данных перестает использовать диалект 1 и начинает подчиняться полным синтаксическим правилам SQL Firebird и может использовать все типы данных Firebird.
Но база данных продолжает хранить все существующие данные и определения в соответствии с диалектом 1. Здесь существует несколько ловушек, в особенности в отношении числовых типов с фиксированной точкой.
Короче говоря, изменение диалекта с помощью gfix не будет ни тактикой быстрой миграции, ни надежным способом миграции из диалекта 1 в диалект 3. Быстрое изменение средствами gfix означает медленный способ полной миграции. Опытные пользователи предлагают вместо этого извлечь скрипт схемы вашей базы данных диалекта 1, изменить подходящим образом определения, а затем использовать инструмент перекачки данных для перемещения старых данных в новую базу.
Если же вы все-таки хотите использовать этот способ, вот синтаксис:
gfix -s[ql_dialectj n база-данных
Здесь n равно 1 или 3.
Например, для изменения диалекта базы данных на 3 выполните:
./gfix -s 3 /data/accounts.fdb
Под Windows вы можете выполнить следующее:
gfix -sql_dialect 3 d:\data\accounts.fdb
Включение и отключение "использовать все пространство"
Firebird заполняет страницы базы данных таким образом, что объем хранимых на странице данных не превышает 80 процентов. Некоторое уплотнение можно получить, изменив коэффициент заполнения на 100 процентов. Это может привести к улучшению производительности при очень большом объеме добавления данных, в особенности если размер строки много меньше размера страницы и множество строк может экономно храниться на одной странице.
Также имеет смысл полностью заполнять страницы в базе данных, если вы планируете распространять ее как базу данных только для чтения, например, в качестве каталога или демонстрационного примера.
Командным переключателем является -u[se], который имеет два аргумента:
gfix -u[se] {reserve | full}
reserve устанавливает использование страницы на 80 процентов, a full устанавливает использование страницы на 100 процентов.
Для включения "использовать все пространство" применяйте команду: ./gfix -use full /demos/catalog.fdb
Для отключения "использовать все пространство" и возврата к 80-процентному заполнению применяйте команду:
./gfix -use reserve /demos/catalog.fdb
! ! !
ПРИМЕЧАНИЕ. Чтобы эта команда работала, база данных должна находиться в режиме чтения/записи.
. ! .
Включение и отключение синхронного вывода
Синонимом синхронного вывода является Forced Writes. Когда поведение является синхронным ("Forced Writes включено"), новые записи, новые версии записей и удаления немедленно записываются на диск после пересылки. При асинхронном выводе ("Forced Writes отключено") новые и измененные данные сохраняются в кэше файловой системы, полагаясь на поведение операционной системы, когда она выведет их на диск.
Термин "отключение Forced Writes" означает переключение поведения по выводу данных с синхронного на асинхронное.
Синтаксис этой команды:
gfix -w[rite] {sync ! async} Для включения Forced Writes введите: gfix -w sync d:\data\accounts.fdb Для отключения Forced Writes введите:
154
После того как база данных переведена в состояние shutdown, к ней могут подключиться только пользователи SYSDBA и владелец базы данных (owner). Всем другим пользователям при попытке соединения с такой базой данных будет выдано соответствующее сообщение об ошибке. - Прим. науч. ред.
155
Количество соединений SYSDBA при состоянии базы данных shutdown ничем не ограничено. Только в Firebird 2.0 есть режим монопольноrо (только одноrо) подсоединения SYSDBA - Прuм, науч, ред.