Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / Lfg / Алгоритмы совместного доступа к базам данных.doc
Скачиваний:
59
Добавлен:
16.04.2013
Размер:
124.93 Кб
Скачать

Ошибки "слишком старый моментальный снимок"

В некоторых ситуациях алгоритм многовариантности не может создать согласованный набор данных для оператора или транзакции. Это происходит тогда, когда Oracleпереписывает информацию сегмента отката, который впоследствии используется длительным запросом или транзакцией "только для чтения" для построения результирующего множества. В таких случаях транзакция будет возвращать сообщение об ошибке, называемой "слишком старый моментальный снимок"("snapshot too old").

Во избежание таких ошибок первое, что нужно сделать, - проанали­зировать структуру транзакций и запросов. Чересчур длинные транзакции "только для чтения" следует просто сократить. Если ошибки "слишком старый моментальный снимок" являются результатом отдельных запросов, можно создать дополнительные сегменты отката или увеличить их размеры, что уменьшит вероятность того, что Oracleслишком быстро перепишет информацию, содержащуюся в этих сегментах.

Автоматическое функционирование системы

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

Итоги

В этой части было рассказано о различных алгоритмах параллельности Oracle8:

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

  • Oracleприменяет разделяемые и исключающие блокировки, чтобы устранить возможные конфликты среди параллельных транзакций. С помощью блокировокDMLOracleуправляет доступом к таблицам и индексам, когда транзакции вводят, обновляют и удаляют строки. С помощью блокировокDDLOracleуправляет доступом к объектам базы данных, когда пользователь создает, изменяет или удаляет объекты.

  • Алгоритм многовариантности, запатентованный Oracle, создает согласованные результирующие множества данных для SQL-операторов и транзакций при помощи сегментов отката системы. Если запросы применяют многовариантность, а не блокировки, они являются неблокирующими и позволяют достигнуть чрезвычайно высокого уровня параллельности работы с базой данных.