Теория и практика построения баз данных (1088289), страница 98
Текст из файла (страница 98)
Здесь должна сыграть свою роль прикладная программа. Она может зафиксировать сделанные изменения, выполнить откат всей транзакции или предпринять какое-то другое действие. Любая программа, выполняемая с уровнем изоляции «сериализуемость», должна содержать такую обработку исключений. Кроме того, когда транзакция, выполняемая при уровне изоляции «сериализуемость», пытается обновить или удалить строку, на которую другой транзакцией или оператором наложена монопольная блокировка, транзакция ждет. Если происходит откат транзакции или оператора, наложившего блокировку, обработка транзакции может быть продолжена. Если же наложившая блокировку транзакция сохраняется, Огас1е выдает ошибку «Саппот Бег!а1!ге», и приложение должно обработать это исключение. Подобным же образом, если произошел откат сериализуемой транзакции вследствие взаимной блокировки, также произойдет ошибка «Саппо1 Бег!а!!ге».
Уровень изоляции «только чтение» При этом уровне изоляции транзакция считывает только те строки с завершенными изменениями, для которых значение ЯСХ меньше или равно ВСХ транзакции. Если транзакция обнаруживает строки с завершенными изменениями, в которых значение ЯСХ превышает ЯСХ транзакции, Огас1е обратится к сегментам отката и реконструирует строку в толг ниде, как она была до начала транзакции. На этом уровне изоляции запрещены вставка, обновление и удаление. Дополнительные замечания о блокировках Приложение может налагать блокировки явным образом, используя форму 5ЕШТ РОВ 0 Р ВАТЕ оператора 5Е ЕЕЕТ.
Это не рекомендуется делать, пока вы не узнаете о блокировках в Огас1е гораздо больше, чем описано здесь. Огас!е использует разнообразные типы внутренних блокировок для обеспечения описанных здесь уровней изоляции. Существует, например, коллективная блокировка строки, а также несколько типов табличных блокировок. Есть и другие блокировки, используемые Огас!е для своих нужд. Вы можете узнать больше об этих блокировках в документации по Огас1е. Чттобы снизить вероятность конфликта блокировок, Огас!е не не дает возможности распространять блокировки с одного уровня на другой.
Строчные блокировки остаются строчными, даже если их насчитываются сотни на сотнях строк таблицы. Эта стратегия отличается от стратегии ВСг1 Яегх ег, как вы узнаете из следующей главы. Огас!е Согрогабоп заявляет, что нерасширение блокиро- Резервное копирование и восстановление в Огас~е 457 вок является преимушеством, и возможно, что это так, особенно если учитывать архитектуру блокировок Огас!е в целом. Огас!е и безопасность Как описывалось в главе 11, для добавления пользователя в базу данных администратор базы данных создает учетную запись с именем пользователя и паролем.
Каждому пользователю присваивается профиль — характеристика предельных объемов системных ресурсов, которые могут быть выделены данному пользователю. Сюда входит лимит совокупного процессорного времени, предоставляемого в течение одного сеанса или за один вызов Огас!е, и другие подооные ограничения. В Огас!е имеются системные и обьектные привилегии. Системные привилегии — это права на выполнение общих задач, таких как 5ЕЕЕСТ АИУ ТЯВЕЕ и 0РЮАТЕ АИУ ТАВОТЕ.
Объектные привилегии относятся к действиям с определенными элементами базы данных — таблицами, представлениями и последовательностями. Для предоставления привилегий другому пользователю можно использовать оператор 6РАИТ. Роль в Огас!е — это совокупность привилегий и других ролей. Одна и та же роль может быть присвоена многим пользователям, и один и тот же пользователь может иметь множество ролей. Примером роли в базе данных галереи Н1е»г КЫце может служить МАИА6Ек.
Эта роль наделяется всеми системными и объектными привилегиями, необходимыми для выполнения менеджерских ф нк ий в галерее. Учетные записи пользователя с данной ролью присваиваются ряду сотрудников галереи Н1е»г Й!с!яе. Более подробную информацшо о безопасности в Огас1е вы можете получить, поискав там документацию по темам пользователь, роли и привилегии.
Резервное копирование и восстановление в Огас!е В Огас1е имеется превосходный набор средств и служебных программ для резервного копирования и восстановления. Они обладают большой гибкостью, что позволяет применять их для самых разных типов баз данных — от небольших коллективных, копирование которых может осуществляться ночью, в нерабочее время, до огромных межорганизационных, которые функционируют круглые сутки без выходных и не должны ни на минуту прекращать работу. Средства восстановления Огас!е Огас!е поддерживает три типа файлов, важных для резервного копирования и вос- становления.
Файлы данньи (г!а!ай!ез) содержат данные пользователя и системную информацию. Из-за способа, применямого Огас!е для сброса буферов данных на 458 Глава 12. Работа с базами данных в Огас!е Резервное копирование и восстановление в Огас!е 459 диск, в произвольныи момент времени файлы данных могут содержать как сохраненные, так и несохраненные изменен»и. Разумеется, обработка транзакций в Огас1е происходит таким образом, что несохраненные изменения в конечном счете либо сохраняются в базе данных, либо удаляются, ио в «снимке» файлов данных, взятом в любой отдельный момент времени, несохраненные изменения будут присутствовать. Таким образом, при остановке Огас!е или выполнении определенных видов резервного копирования необходимо производить «чистку» файлов данных, чтобы в них оставались только сохраненные изменения.
Файлы отката (ВеРо 51еэ) содержат журналы изменений базы данных; они представляют собой резервные копии сегментов отката, используемых при параллельной обработке транзакций. Контрольные файлы (сопгго! Ейез) — зто небольшие файлы, в которых перечисляются имена, местоположение и описание содержимого различных файлов, используемых Огас!е. Контрольные файлы часто обновляются, и они должны быть доступны для Огас!е, чтобы база данных могла функционировать. Есть два типа файлов отката. Текущие, или оилайиовые, файлы отката (оп1(пе ВеРо Й!ев) х ) ранятся на диске и содержат сегменты отката от недавних изменений в базе данных.
Архивные, или оффлайновые, файлы отката (о%пе ВеРо В!ев)— это резервные копии текущих файлов отката. Они хранятся отдельно от текущих файлов отката и не обязательно на дисковом накопителе. Огас!е может работать в одном из двух режимов: АкСН1ЧЕ106 и МОАкСН1ЧЕС06. В режиме АкСН1ЧЕС06 при заполнении текущих файлов отката их содержимое копируется в архивные файлы отката. Контрольные файлы и текущие файлы отката настолько важны, что Огас1е рекомендует хранить две активные копии каждого из них. Этот процесс называется в терминологии Огас!е мультиилексировакием (шц111р!ех1пя). Типы сбоев Т ехника восстановления в Огас1е зависит от типа возникшего сбоя. В случае сбоя приюжения (арр1(сагюп (а11цге), произошедшего, например, из-за ошибки в логике приложения, Огас1е просто выполняет откат несохраненных изменений, сделанных данным приложением, используя для этого сегменты отката в оперативной памяти и текущие файлы отката.
Другие типы сбоев подразумевают более сложный процесс восстановления. С ой экземпляра (1пзгапсе (а!1цге) — это сбой в самой Огас1е, произошедший изза ошибки операционной системы или аппаратного обеспечения компьютера. С ой носителя (шег)1а (а(1цге) происходит, когда Огас1е оказывается не в состоянии произвести запись в физический файл.
Причина может заключаться в том, что имеется повреждение головки диска или другая дисковая ошибка, что нужное устройство не включено в сеть или что файл испорчен. Восстановление после сбоя экземпляра Когда Огас1е перезапускается после сбоя экземпляра, она в первую очередь п осматривает контрольный файл, чтобы определить, где находятся все остальные файлы.
Затем она обрабатывает файлы данных, используя информацию из текущих файлов отката. При этом выполняются (накатываются) все изменения, зарегистрированные в файлах отката, но не сохраненные в файлах данных на момент возникновения сбоя. В ходе этого процесса сегменты отката заполняются записями транзакций из файла отката.
По завершении наката файлы данных могут содержать несохраненные изменения. Эти изменения могли присутствовать в файлах данных в момент сбоя экземпляра, а могли появиться в результате наката. Так или иначе, Огас!е удаляет эти изменения, используя сегменты отката, созданные в ходе выполнения наката. Чтобы незавершенным транзакциям не приходилось дожидаться отката, все сохраненные транзакции помечаются как мертвые (РЕАР). Если новая транзакция оказывается заблокированной изменением, которое произведено мертвой транзакцией, диспетчер блокировок снимает блокировки, удерживаемые мертвой транзакцией. При восстановлении после сбоя экземпляра архивные файлы отката не используются.