Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
* обновление базы данных InterBase до Firebird или с меньшей версии базы данных Firebird до более высокой версии (например, обновление ODS);
* разделение базы данных на множество файлов или изменение размеров существующих нескольких файлов. Это выполняется по желанию;
* распределение многофайловой базы данных на несколько дисков. Это выполняется по желанию.
Копирование и восстановление также играют важную роль при наличии неприятных событий, которые могут разрушать базы данных. Подробности осуществления стратегии восстановления базы данных см. в приложении 4.
Обновление структуры
Вероятно, основным изменением в новых релизах сервера Firebird является изменение структуры на диске (Оп-Disk Structure, ODS). Если ODS изменилась, и вы хотите использовать преимущества новых возможностей Firebird, обновите ваши базы данных до новой ODS. Новая версия сервера может работать с базами данных, созданными в некоторых предыдущих версиях, однако сервер не может использовать свои новые возможности для старой базы данных с более низким значением ODS.
Вы можете использовать большинство баз данных Firebird 1.0.x непосредственно в Firebird 1.5, хотя ODS версии 1.5 (10.1) выше, чем в версии 1.0.x (10.0). Тем не менее рекомендуется выполнить процедуру обновления для ваших баз данных, обновив их с 10.0 до 10.1, для получения преимуществ повышения производительности за счет возможности индексирования системных таблиц в версии 1.5.
Для обновления существующих баз данных до новой версии ODS выполните следующие шаги:
1. Перед инсталляцией новой версии ODS Firebird выполните резервное копирование баз данных с использованием старой версии gbak.
2. Установите новую версию сервера Firebird, как описано в главе 1.
3. После инсталляции новой версии восстановите базы данных с использованием утилиты gbak новой версии из каталога /bin корневого каталога Firebird.
Диалект 1 базы данных остается диалектом 1 и после восстановления базы данных. База данных остается ограниченной возможностями языка InterBase 5, хотя некоторые ограничения применяются к диалекту 1 баз данных в новой версии ODS, которые не применялись к InterBase 5. Например, в Firebird есть множество новых зарезервированных слов, которые будут недопустимыми в базе данных диалекта 1. Полный список зарезервированных слов см. в приложении 11.
Немного отойдя от обсуждаемой темы, скажем, что можно изменить диалект восстановленной базы данных диалекта 1 в диалект 3 при использовании инструмента gfix, обсуждаемого в главе 39. Однако такая миграция не является простым делом. Язык не является единственным, в чем различаются диалекты. Различия в типах данных не менее важны, если не более.
Например, домены и столбцы чисел с фиксированной точкой сохраняют свои старые атрибуты при изменении базы данных до диалекта 3. Типы NUMERIC и DECIMAL С точностью выше 10 в диалекте 1 хранятся в виде DOUBLE PRECISION. Преобразование в
64-битовые числа с фиксированной точкой не выполняется при изменении диалекта на 3 - вы должны создать новые столбцы требуемого типа и выполнить преобразование старых значений в новые столбцы.
Firebird унаследовал некоторые возможности для выполнения миграции из диалекта 1 в родной SQL-диалект Firebird (диалект 3). Известно, что существуют гораздо более простые и безопасные способы выполнить такую миграцию. Лучшие результаты получаются, если создать скрипт, выполнив извлечение метаданных, изменить его при необходимости и восстановить в "пустую" базу данных диалекта 3. Широко доступны прекрасные свободно распространяемые или недорогие инструменты
Права на выполнение копирования и восстановления базы данных
Использование gbak для копирования и восстановления ограничено пользователем SYSDBA и владельцем этой базы данных.
! ! !
ПРИМЕЧАНИЕ. Любой пользователь может восстановить базу данных при использовании переключателя -c[reate] (см. разд. "Выполнение восстановления"), если создаваемая база данных не будет перекрывать существующую базу данных.
. ! .
Изменение владельца базы данных
Восстановленный файл базы данных или созданный из gbak имеет владельцем того пользователя, который выполнил восстановление. Следовательно, выполнение копирования и восстановления является механизмом для изменения владельца базы данных.
! ! !
ВНИМАНИЕ! Любой может украсть базу данных Firebird путем восстановления базы данных с резервной копии на машине, где ему известен пароль пользователя SYSDBA. Важно обеспечить, чтобы ваши резервные копии были защищены от неавторизованного доступа [148] .
148
Вопросы безопасности файловой системы и других средств окружения обсуждаются в главах 33 и 34.
. ! .
Имя пользователя и пароль
Когда Firebird проверяет полномочия при запуске gbak, он определяет пользователя в соответствии со следующей иерархией:
1. Имя пользователя и пароль, заданные переключателями в команде gbak.
2. Только для локального варианта gbak [149] . Имя пользователя и пароль, заданные в переменных окружения ISC_USERH ISC_PASSWORD, проверяются на присутствие в базе данных безопасности (security.fdb в версии 1.5 и isc4.gdb для версии 1.0.x). Сохранение постоянно установленных значений этих переменных строго не рекомендуется, поскольку крайне небезопасно.
149
Если вы по-настоящему беспечны и оставите эти переменные окружения на рабочих станциях, показывая всему миру пароль пользователя SYSDBA, удаленные пользователи также смогут выполнять копирование, не задавая учетных данных. Нечего и говорить, что такая практика должна быть полностью исключена.
3. Только для POSIX. Если не предоставлено учетных данных пользователя ни на одном из предыдущих уровней, Firebird позволяет пользователю root запускать gbak с сервера или с доверенной машины.
Выполнение копирования
Для вызова gbak или перейдите в каталог Firebird /bin, где размещается gbak, или укажите для утилиты полный путь. Вся команда должна размещаться в одной строке. В описании синтаксиса и примерах логически замкнутые части команды представлены в виде отдельных строк с отступами.