Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Если вы хотите понять, как могут появиться нарушения в вашей базе данных, вернитесь к разд. "Как разрушить базу данных Firebird" в конце главы 15 [166] Во время написания этой книги автор услышала о первом случае нового способа разрушения баз данных. Жертва проигнорировала все советы и разместила базу данных в каталоге NFS. После этого продолжалось соединение клиентов с базой данных клиентов через два Классических сервера Firebird 1.5 с различных машин, ни одна из которых не была владельцем жесткого диска, на котором находилась база данных. В результате база данных была разру-
Восемь шагов восстановления
В этом приложении описаны шаги, которые вам нужно выполнить при использовании инструментов командной строки gfix или gbak, чтобы попытаться восстановить неповрежденные данные при некоторых видах разрушения. Однако имейте в виду, что существуют отдельные виды разрушения сервера, которые такая процедура не может исправить. См. в приложении 12 ресурсы, доступные для использования в этих случаях.
Для применения gfix и gbak в этой процедуре сделайте текущим каталог Firebird /bin на серверной машине.
Получение исключительного доступа
Первым делом, что нужно выполнить, когда появилось сообщение о разрушении, - это отключить всех пользователей от системы. Не позволяйте никому пытаться продолжить работу. Продолжение попыток использования базы данных может сделать восстанавливаемую базу данных невосстанавливаемой.
Проверка базы данных требует исключительного доступа к базе данных, иначе вы увидите следующее сообщение при попытке запустить gfix:
OBJECT database_name IS IN USE [Объект имя-базы-данных используется]
To же сообщение может появиться, если вы единственный пользователь, но имеете другую активную транзакцию. Например, утилита isql использует до трех параллельных транзакций. Остановив isql и другие инструменты администратора, вы можете выполнять работу.
Для получения исключительного доступа выполните останов базы данных, находясь пользователем SYSDBA или пользователем, являющимся владельцем базы данных. Подробности см. в главе 39. Например, следующая команда заблокирует все другие попытки соединения с базой данных и приведет к ее останову через две минуты:
gfix -sh -force 120 -user SYSDBA-password yourpword
Создание копии работающего файла
В этот момент gbak не может выполнить резервное копирование базы данных, содержащей разрушенные данные. Поскольку вы имеете исключительный доступ, выполните копирование средствами файловой системы (а не с помощью gbak) файла базы данных. В POSIX используйте команду ср, а в Windows команду сору или эквивалентное действие копировать/вставить в графическом интерфейсе. Убедитесь, что в этот момент нет пользователей, соединенных с базой данных, - даже вас!
Например, в Windows, находясь в каталоге базы данных, выполните:
copy damaged.fdb repaircopy.fdb
! ! !
ВНИМАНИЕ! Даже если вы можете восстановить исправленную базу данных, которая сообщала об ошибках контрольных сумм, может оказаться сложным определить объем потерянных данных. Если это важно, вы можете выбрать более раннюю копию, в которой вы сможете отыскать отсутствующие данные после проверки и починки разрушенных структур вашей текущей базы данных.
. ! .
Работайте с repaircopy.fdb.
Выполнение проверки
В первую очередь используются переключатели -v[alidate] и -f[ull] утилиты gfix для проверки структур записей и страниц. Процесс проверки сообщает о разрушенных структурах и освобождает неназначенные фрагменты записей или "осиротевших страниц" (т. е. страниц, которые выделены, но не назначены никаким структурам данных).
gfix -v -full {путь}repaircopy.fdb -user SYSDBA -password yourpword
Переключатель -n[o update] может быть использован вместе с -v для проверки и выдачи сообщений о разрушенных или не назначенных структурах без попыток их исправить:
gfix -v -n {путь}repaircopy.fdb -user SYSDBA -password yourpword
Если постоянно появляются ошибки контрольных сумм в процессе такого способа проверки, то используйте переключатель -i[gnore], чтобы проверка их игнорировала:
gfix -v -n -i {путь}repaircopy.fdb -user SYSDBA -password yourpword
Исправление разрушенных страниц
Если gfix сообщает о поврежденных данных, то следующий шаг - исправить (или починить) базу данных, убирая такие структуры.
Переключатель -m[end] отмечает разрушенные записи как недоступные, следовательно, они будут пропущены в процессе последующего резервного копирования. Включите переключатель -f[ull], чтобы запрос исправлял все разрушенные структуры, и переключатель -i[gnore], чтобы обходить ошибки контрольных сумм в процессе исправления.
gfix -mend -full -ignore {путь}repaircopy.fdb -user SYSDBA -password yourpword
или короче:
gfix -m -f -i {nyTb}repaircopy.fdb -user SYSDBA -password yourpword
Проверка после исправления -mend
После того как команда с переключателем -mend завершит свою работу, опять выполните
gfix -v -full {путь}repaircopy.fdb -user SYSDBA -password yourpword для проверки, остались ли еще разрушенные структуры.
Очистка и восстановление базы данных
Затем выполните полное резервное копирование и восстановление базы данных с использованием gbak, даже если все еще появляются сообщения об ошибках. Добавьте переключатель -v[erbose], чтобы видеть подробности. В своей простейшей форме команда резервного копирования может быть (все в одной команде):
gbak -b -v -i {путь}repaircopy.fdb {путь}repaircopy.fbk -user SYSDBA -password yourpword
Сложности в процессе резервного копирования
Проблемы сборки мусора могут привести к аварийному завершению gbak. Если такое произошло, добавьте переключатель -[g], чтобы сообщить, что не надо собирать мусор.
gbak -b -v -i -g {путь}repaircopy.fdb {путь}repaircopy.fbk -user SYSDBA -password yourpword
Если есть разрушения в версиях записей, связанных с зависшей транзакцией, вам может понадобиться добавить переключатель -limbo:
gbak -b -v -i -g -1 {путь}repaircopy.fdb (путь)repaircopy.fbk -user SYSDBA -password yourpword
Восстановление очищенной резервной копии в качестве новой базы данных
Теперь создайте новую базу данных из резервной копии с переключателем -v[erbose], чтобы наблюдать, что восстанавливается:
gbak -create -v {путь}repaircopy.fbk (путь)reborn.fdb -user SYSDBA -password yourpword
Проверка восстановленной базы данных
Убедитесь, что восстановление базы данных разрешило проблемы, выполнив проверку восстановленной базы данных с использованием переключателя -n[o update]:
gfix -v -full {путь}reborn.fdb -user SYSDBA -password yourpword
Если существуют проблемы с восстановлением, вам может быть придется рассмотреть возможности новых попыток с использованием других переключателей gbak для уменьшения источников этих проблем, например:
Читать дальшеИнтервал:
Закладка: