Ваши инструменты и процедуры администратора должны быть спроектированы таким образом, чтобы предотвратить перезапись базы данных, когда с ней соединены любые пользователи (включая SYSDBA).
Чтобы сделать это практически, рекомендуется восстанавливать базу на резервное дисковое пространство, используя gbak -с[reate]. Прежде чем сделать восстановленную базу данных активной, проверьте ее в резервной области, используя isql или ваш предпочитаемый инструмент администратора.
Разрешение пользователям соединяться с базой данных в процессе ее восстановления
Если вашей организации нравится жить на острие ножа, используйте переключатель -restore и позвольте пользователям соединяться с базой данных и выполнять изменения. Процесс восстановления создает базу данных с нуля, и как только будут созданы таблицы, ваши пользователи смогут (по крайней мере, потенциально, или если они все SYSDBA) обращаться к ним с операциями DML, в то время как ссылочная целостность и другие ограничения находятся еще только на подходе. В лучшем случае они получат исключения и кучу неподтвержденных транзакций в частично сконструированной базе данных. В худшем, они полностью уничтожат целостность данных.
Копирование файлов базы данных, в то время как с ней соединены пользователи
Используйте любую утилиту копирования или архивирования файловой системы (DOS copy, xcopy, tar, gzip, WinZip, WinRAR и т.д.) для копирования файлов базы данных, в то время как с ней соединены любые пользователи (включая SYSDBA). Копия будет поврежденной, но еще хуже, система блокировки и/или кэширования этих программ может привести к потере данных и, возможно, к разрушению исходного файла.
Когда база данных больше не нужна, она может быть удалена с сервера. Удаление базы данных удаляет также все файлы, связанные с базой данных - первичные и вторичные файлы, файлы теневой копии, системные журналы - и все их данные.
Командой удаления базы данных является DROP DATABASE; она не имеет параметров. При выполнении команды вы должны быть соединены с базой данных как ее владелец, пользователь SYSDBA или (в Linux/UNIX) как пользователь с привилегиями операционной системы root.
Если, будучи соединенным с базой данных, вы захотите ее удалить, используйте для этого оператор:
DROP DATABASE;
После удаления база данных не может быть восстановлена, следовательно:
* будьте уверены, что вы действительно хотите, чтобы она была потеряна навсегда;
* вначале сделайте резервную копию, если есть шанс, что вам может в будущем что-нибудь из нее понадобиться.
Пора дальше
Создание базы данных инсталлирует инфраструктуру, необходимую для начала создания объектов. Первичным объектом для постоянного хранения данных в базе данных является таблица. В отличие от электронных таблиц, большинства настольных систем управления данными и даже одного или двух кандидатов на "профессиональную" реляционную СУБД Firebird не сохраняет данные в структурах, которые являются "табличными" в виде упорядоченных строк и столбцов, распознаваемых файловой системой. Firebird управляет собственным дисковым пространством и использует собственные правила для размещения и отображения постоянных данных. Он поддерживает множество способов выделения данных в подобные таблицам наборы. В следующей главе мы начнем с создания постоянного SQL-объекта TABLE.
В терминологии SQL-89 и SQL-92 таблицы Firebird являются постоянными базовыми таблицами. Эти стандарты определяют некоторые другие типы, включая просматриваемые таблицы, которые Firebird реализует в виде просмотров (view, см. главу 24), и производные таблицы (derived tables), которые Firebird реализует в виде хранимых процедур выбора (см. главы 28 и 30).
В отличие от настольных баз данных, таких как Paradox и dBase, база данных Firebird не является серией "табличных файлов", физически организованных в виде строк и столбцов. Firebird хранит данные, независимо от их структуры в сжатом формате на страницах базы данных. Он может хранить одну или более записей - или, более правильно, строк- данных таблицы на одной странице. В случаях, когда данные одной строки слишком велики, чтобы разместиться на одной странице, строка может размещаться на нескольких страницах.
Хотя страница, которая хранит данные таблицы, всегда будет содержать данные, принадлежащие одной таблице, страницы не хранятся рядом. Данные таблицы могут быть разбросаны по всему диску, а в случае многофайловых баз данных они могут быть распределены между разными каталогами и дисками. Данные BLOB хранятся отдельно от строк, которые ими владеют, в страницах базы данных другого типа.
Читать дальше