Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Здесь nnnnnn - идентификатор транзакции.

Теневые копии

Концепция, создание и поддержка теневых копий базы данных подробно обсуждались в главе 15. Утилита gfix имеет средства для работы с теневыми копиями.

Активизация теневой копии

Ключ для активизации теневой копии, когда база данных "умерла", -ac[tivate]. Синтаксис:

gfix -ас <путь-к-первому-тому-оперативном-копии>

Предположим, что первым томом теневой копии является employee.shl. Находится в каталоге /opt/dbshadows. Вы можете активизировать ее следующей командой:

./gfix -ас /opt/dbshadows/employee.shl

Удаление недоступных теневых копий

Переключатель для удаления недоступных теневых копий -k[ill]. Синтаксис:

gfix -k[ill] база-данных

Для удаления недоступных теневых копий для базы данных employee.fdb введите:

./gfix -k /opt/firebird/examples/employee.fdb

Список переключателей gfix

Все доступные переключатели gfix описаны в табл. 39.1. Часто для одной задачи применимо несколько переключателей. Порядок переключателей не является важным, однако просмотрите предыдущие замечания в этой главе для определения подходящих комбинаций. Комбинации, не имеющие логического смысла, приведут к исключениям.

Таблица 39.1. Список переключателей gfix

Переключатель

Задача

Назначение

ас[tivate]

файл-оперативной-копии

Оперативная копия

Используется с путем к первичному файлу оперативной копии для активизации оперативного копирования

– at[tach]

Закрытие базы данных

Используется с -shut для предотвращения новых подключений к базе данных за период времени ожидания в n секунд. Закрытие будет отменено, если все еще будут оставаться активные соединения по прошествии n секунд

– b[uffers] n

Буферы кэша

Устанавливает размер буферов кэша базы данных по умолчанию в n страниц. Это рекомендованный способ установки размера кэша базы данных по умолчанию

– ca[che] n

Не используется

– c[ommit] {ID | all}

Восстановление транзакций

Подтверждает зависшую транзакцию с идентификатором ID или подтверждает все зависшие транзакции

– f[orce] n

Закрытие базы данных

Используется вместе с -shut для форсированного закрытия базы данных через n секунд - радикальное решение, которое должно быть использовано как последнее средство

– full

Починка данных

Используется вместе с -v[alidate] для проверки структур записей и страниц; освобождает неназначенные фрагменты записей

– h[ousekeeping]

Чистка

Изменяет порог автоматической чистки в n транзакций. Значение по умолчанию 20 000. Устанавливайте n в 0 для отключения автоматической чистки

– i[gnore]

Починка данных

Игнорировать ошибки контрольных сумм при проверке или чистке

– k[ill] база-данных

Теневая копия

Используется вместе с путем к файлу базы данных для уничтожения всех неиспользуемых теневых копий

– l[ist]

Восстановление транзакций

Отображает идентификаторы всех зависших транзакций и указывает, что должно произойти, если будет задано -t [wo_phase] при автоматическом двухфазном подтверждении

– m[end]

Починка данных

Отмечает разрушенные записи как неиспользуемые, следовательно, они будут пропущены при последующей проверке или копировании

– n[o update]

Починка данных

Используется вместе с -v[alidate] для проверки разрушенных или неразмещенных структур, сообщая о них, но не исправляя их

– o[nline]

Закрытие базы данных

Отменяет операцию -shut, которая была в списке, или отменяет выполняющееся в настоящий момент закрытие базы данных

– pa[ssword] пароль

Удаленный доступ

Передает пароль для доступа к базе данных. Для большинства операций gfix это должен быть пароль пользователя SYSDBA, владельца базы данных или (для POSIX) пользователя с привилегиями root

– p[rompt]

Восстановление транзакций

Используется вместе с -l[ist] для перехода в режим подсказок во время восстановления транзакций

– r[ollback] {ID | all}

Восстановление транзакций

Выполняет откат зависшей транзакции с идентификатором ID или выполняет откат всех зависших транзакций

– s[weep]

Чистка

Запускает немедленную чистку базы данных

– sh[ut]

Закрытие базы данных

Закрывает базу данных. Требует указания

– at[ach], -f[orce], или -tr[an] n

– sql[dialect] n

Миграция

n = 3. Изменяет SQL диалект базы данных с 1 на 3. Не изменяет данные и не преобразует существующие типы данных

– t[wo_phase] {ID | all}

Восстановление транзакций

Выполняет автоматическое двухфазное восстановление либо транзакции с указанным идентификатором ID, либо всех зависших транзакций

Назначение

– tr[an] n

Закрытие базы данных

Используется вместе с -shut для запрета запуска новых транзакций в процессе ожидания n секунд. Закрытие будет отменено, если все еще будут активные транзакции по прошествии n секунд

– use {reserve | full}

Использование всего пространства

Включает или отключает использование полного пространства, отведенного для страниц базы данных. Режим по умолчанию reserve использует 80-процентное заполнение. При переключении на full будет использоваться все выделенное пространство

– user пользователь

Удаленный доступ

Передает имя пользователя для доступа к базе данных. Для большинства операций gfix это должен быть пользователь SYSDBA, владелец базы данных или (для POSIX) пользователь с привилегиями root

– v[alidate]

Починка данных

Определяет и освобождает страницы, которые были выделены, ко не назначены никакой структуре данных. Также сообщает о разрушенных структурах

– w[rite] {sync | async}

Forced Writes

Включает или отключает Forced Writes (синхронную буферизованную запись), sync

включает, async отключает

– z

Информация

Выводит версию gfix и сервера Firebird

Сообщения об ошибках gfix

В табл. 39.2 представлены исключения, которые могут появиться в командах gfix вместе с советами, как скорректировать ваши команды.

Таблица 39.2. Сообщения об ошибках gfix

Сообщение об ошибке

Причины и рекомендуемые действия

Database file name <string> already given (Имя файла базы данных <строка> уже указано)

Режим командной строки был интерпретирован как файл базы данных, потому что режим не начинался со знака минус (-) или наклонной черты (/). Исправьте синтаксис

Invalid switch (Неверный переключатель)

Режим командной строки не был распознан

Incompatible switch combinations (Несовместимая комбинация переключателей)

Вы задали, по меньшей мере, два режима, которые не работают вместе, либо вы указали режим, который не имеет смысла без другого режима (например, -full)

More limbo transactions than fit. Try again.

(Зависших транзакций больше допустимого. Попытайтесь снова.)

База данных содержит больше зависших транзакций, чем gfix может вывести в одной сессии. Подтвердите или отмените некоторые из зависших транзакций, а затем снова выполните операцию

Numeric value required (Требуется числовое значение)

Режим -housekeeping требует одного неотрицательного аргумента, задающего количество транзакций для чистки

Please retry, specifying <string> (Пожалуйста, повторите, задав <строка>)

Должно быть задано имя файла и по меньшей мере один режим

Transaction number or "all" required (Требуется номер транзакции или "all")

Вы указали -commit, -rollback или -two_phase без задания требуемого аргумента

– mode read only or read write -mode read only или read write

Режим -mode принимает в качестве переключателя read only или read write

"read_only" or "read_write" required (Требуется "read only" или "read write")

Режим -mode должен сопровождаться одним из этих аргументов

Пора дальше

В конце этой книги глава 40 представляет техническое описание наименее дружественной для пользователя утилиты Lock Print, а также подсистему блокировки ресурсов. Она включает объяснения связанных с блокировками установок в firebird.conf или isc config/ibconfig, которые иначе могли бы остаться для большинства из нас большой загадкой!

ГЛАВА 40. Менеджер блокировок.

Блокировки используются в многопользовательских средах для синхронизации работы и предотвращения разрушения целостности процессов работой других процессов. Firebird использует как средства блокировки операционной системы, так и собственный менеджер блокировок для координации доступа к базе данных.

Эта тема сложна для читателя, который является новичком в Firebird. Она погружает его в некоторые серьезные технические области, с которыми знакомят гуру [158] с блестящими глазами на конференциях. Пока утилиты Lock Print - довольно сырые сейчас- являются серьезным инструментом для сложных задач поиска ошибок при подходах, которые некоторые разработчики применяют в их интерфейсах приложений. В любом случае примите эту главу как возможный запасной вариант, который может спасти вас в один "прекрасный" день.

158

Для понимания темы Lock Print с благодарностью и признательностью отправляемся к Ann Harrison. Она была первой, кто подробно документировал этот полезный, но слабо освещенный инструмент поиска неисправностей, в официальном документе, написанный Ann для IBPhoenix. "Reading a Lock Print" можно найти в разделе документации на http://www.ibphoenix.com.

Вы можете спросить, почему мы должны интересоваться системой блокировки, которая ничего не блокирует? Параллельность и согласованность, видимые клиентам, основываются на транзакциях и управляются через версии записей. Однако ответ в том, что Firebird использует блокировки внутренне. Он поддерживает согласованность структуры на диске через блокировки и осторожную запись. В то же время он также использует сервисы блокировок операционной системы для управления доступом к файлам базы данных для предотвращения открытия Суперсервером дважды одного и того же файла под разными именами.

Блокировка, основанная на транзакциях, позволяет осуществлять блокировки в любой точке выполнения транзакции. Однако, однажды установленные, они могут быть сняты только в конце. Даже явная блокировка на уровне оператора, введенная в Firebird 1.5, не имеет "разблокирующего" оператора. Операторы выполняются в обычной транзакции; подтверждение или откат транзакции снимает блокировку как обычно.

Firebird остерегается двухфазной блокировки для своего первичного управления параллельностью, поскольку она не может обеспечить адекватных уровней параллельности и соответствия, Firebird использует блокировки в процессе изменений для предотвращения записи двумя транзакциями на одну и ту же страницу в одно и то же время. Внутренняя блокировка управляется самой системой. Объекты в системе - называемые "владельцами блокировки" или просто "владельцами" - состязаются в блокировке множества ресурсов. Не удивительно, что эти ресурсы включают в себя и страницы, содержащие записи, отмеченные для обновления.

Когда транзакция получает блокировку страницы, она сохраняет эту блокировку, пока Менеджер блокировок не попросит ее освободить страницу; следовательно, транзакция может выполнить множество изменений на одной странице без ее освобождения и повторного чтения.

Менеджер блокировок Firebird

В Суперсервере о Менеджере блокировок можно думать как об отдельном "управляющем центре", с которым договариваются транзакции о приобретении прав на выполнение запросов. Менеджер блокировок включает в себя фрагмент памяти и некоторые подпрограммы для обработки запросов. Его память разделена на различные блоки: блоки блокировок, которые ссылаются на ресурсы; другие блоки, которые представляют транзакции и другие объекты, запрашивающие блокировки, и блоки истории. Его подпрограммы ответственны за получение и управление запросами владельцев на блокировки ресурсов, выделение блоков и их освобождение. Суперсервер также управляет "защелками" для координации изменений в параллельных транзакциях.

Классический сервер проще: владельцы запрашивают получение контроля над таблицей блокировок, так что каждый код процесса управления блокировкой может запрашивать, предоставлять и освобождать блокировки для их владельцев.

Состояния блока

Каждая операционная система предоставляет некий вид механизма использования/освобождения для синхронизации событий ресурсов. Поскольку для Firebird нужен управляющий механизм с множеством состояний, он реализует свою собственную систему управления блокировками с семью состояниями. На рис. 40.1 показано решение уровней блокировок.

Поделиться:
Популярные книги

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Его нежеланная истинная

Кушкина Милена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Его нежеланная истинная

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Наследник

Шимохин Дмитрий
1. Старицкий
Приключения:
исторические приключения
5.00
рейтинг книги
Наследник