Этот выпуск посвящен размещению сегментов отката в нескольких табличных пространствах.
По мотивам ответа Тома Кайта на вопрос
пользователя, заданный в апреле 2003 года. Ну, и для полноты картины - формальный синтаксис
оператора CREATE ROLLBACK SEGMENT в Oracle 9i Release 2 (9.2.0)
В скольких табличных пространствах размещать сегменты отката?
А) Имеет ли смысл распределять сегменты отката по нескольким табличным пространствам,
если эти пространства расположены на одном наборе дисков?
Б) Зависит ли ответ от версии Oracle?
Ответ Тома Кайта
А) В 9iR2 следует использовать одно табличное пространство UNDO, и все. В Oracle 9i
явно настраивать сегменты отката больше не нужно.
В версиях 8i я всегда выделял отдельное табличное пространство для каждого сегмента
отката. Это упрощает их уменьшение вручную (не используйте установку optimal - это
напрасная трата времени) при необходимости. Одно табличное пространство, один файл,
один сегмент отката - легко уменьшить.
Но, повторю еще раз: не используя табличные пространства UNDO в 9ir2, вы многое
теряете.
b) see a
Почему один? Комментарий читателя от 6 апреля 2003 года
Привет, Том!
Почему только один сегмент отката? НЕ будет ли более эффективно создать несколько
сегментов отката, особенно в системе оперативной обработки транзакций (ООТ)?
Когда ты пишешь про один сегмент отката, должно ли в нем быть много (например, 30-40
или больше) экстентов или как можно меньше?
Когда можно утверждать, что одного сегмента отката не достаточно (конфликты при
доступе к заголовку undo) и надо создавать новые (в версиях до 9i, естественно)?
Ответ Тома Кайта
Я писал про один сегмент отката?
Мне кажется, нет...
Я писал:
В 9iR2 - используйте табличное пространство undo и сервер Oracle сам позаботится о
размере и количестве сегментов отката в этом табличном пространстве undo.
В 8i я создавал один сегмент отката в табличном пространстве, или отдельное табличное
пространство для каждого сегмента отката. Я говорил об отношении один к одному между
сегментом отката и табличным пространством, а не о количестве сегментов отката.
Оригинал обсуждения этого вопроса можно найти
здесь.
Следующий оператор создает сегмент отката со стандартными параметрами хранения в
локально управляемом табличном пространстве:
CREATE TABLESPACE rbs_ts
DATAFILE 'rbs01.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K;
/* Этот и следующий оператор не сработает, если база данных работает в режиме
автоматического управления данными отмены - Automatic Undo Mode (9i). */
CREATE ROLLBACK SEGMENT rbs_one
TABLESPACE rbs_ts;