Продолжается подписка на наши издания! Вы не забыли подписаться?

Автоматическое управление сегментами отката транзакций и версиями данных в Oracle9i.**

Дмитрий Безруков, ФОРС

Oracle в версии 9i провозгласил лозунг упрощения своего программного обеспечения (lowering the total cost of ownership (TCO). Возможности, описанные в данной статье, реализованы в рамках этого лозунга.

Любой администратор базы данных Oracle знает, что мониторинг и управление сегментами отката – дело непростое. Данная статья посвящена новым возможностям Oracle9i, значительно упрощающим администрирование благодаря автоматическому управлению сегментами отката. Кроме того, рассматривается возможность использования старых версий данных, хранящихся в сегментах отката, при помощи ретроспективных запросов (flashback queries).

Эта возможность называется автоматическим управлением отменами (сокращается как АУО) или, по-английски, Automatic Undo Management (AUM).

Администрирование версионности данных в предыдущих версиях Oracle

В предыдущих версиях Oracle старые версии данных некоторое время хранились в сегментах отката (rollback segments). В начале транзакции ей назначался некоторый сегмент отката, где и сохранялись старые версии данных. Во время работы транзакции активные экстенты сегмента отката располагались между головой и хвостом сегмента отката (см. статью «Сегменты отката в СУБД Oracle») и не могли быть перезаписаны старыми версиями данных от другой транзакции, назначенной на тот же сегмент отката. После фиксации (commit) транзакции пространство, занимаемое старыми версиями данных, может быть перезаписано другой транзакцией в случае, если экстенты сегмента отката, в которых они находятся, не активны. В предыдущих версиях, в отличие от Oracle9i, не существовало средств для сколько-нибудь продолжительного хранения старых версий данных в сегментах отката.

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

Новая транзакция ассоциируется с сегментом отката по алгоритму LRU. То есть, выбирается тот сегмент отката, с которым была ассоциирована самая старая транзакция. В первую очередь просматриваются сегменты отката, не связанные с работающими транзакциями, а в случае отсутствия таковых – содержащие активные транзакции.

Каждые экстент сегмента отката может содержать информацию отката от нескольких транзакций (в [6] утверждается, что каждая транзакция пишет информацию отката, начиная с нового экстента, что противоречит действительности), но один блок не может содержать информацию от нескольких транзакций...

**полностью статью можно прочитать в печатной версии журнала

Copyright © 1994-2016 ООО "К-Пресс"