Oracle

В данном разделе представлены выдержки и некоторые программы из моего диплома,
посвященного настройке и оптимизации работы сервер ORACLE.



Rollback Segments.

При изменении информации в базе данных в результате транзакций в Rollback Segments сохраняется информация отмены. При создании базы данных в табличном пространстве SYSTEM автоматически создается сегмент отката с именем SYSTEM. ORACLE старается использовать сегмент отката SYSTEM лишь для специальных системных транзакций. Количество сегментов отката, которое необходимо создавать, зависит от числа транзакций, выполняющихся одновременно.

Несколько транзакций могут конкурировать между собой за Rollback Segments. Узнать ухудшает ли эта конкуренция производительность можно, анализируя системную таблицу V$WAITSTAT, столбцы:
UNDO HEADER - число ожиданий буферов, содержащих блоки заголовков сегментов отката, отличных от сегмента отката SYSTEM.
UNDO BLOCK - число ожиданий буферов, содержащих блоки, отличные от блоков заголовков для сегментов отката, отличных от сегмента отката SYSTEM.
SYSTEM UNDO HEADER - число ожиданий буферов, содержащих блоки заголовков сегмента отката SYSTEM.
SYSTEM UNDO BLOCK - число ожиданий буферов, содержащих блоки, отличные от блоков заголовков сегмента отката SYSTEM.

Запрос 1.

 
SELECT class, count
FROM V$WAITSTAT
WHERE class IN ('undo header', 'undo block', 'system undo header', 
                              'system undo block');
3апрос 2.
 
SELECT SUM(value) 
FROM v$sysstat
WHERE name IN ('db block gets', 'consistent gets');
Если число ожиданий любых блоков Rollback Segments (запрос 1) к общему числу запросов (запрос 2) превышает 1%, то надо увеличить число Rollback Segments при помощи конструкции следующего вида:
 
CREATE PUBLIC ROLLBACK SEGMENT Имя сегмента отката
    TABLESPACE Имя табличного пространства
    STORAGE (
         INITIAL 100K
         NEXT 100K
         OPTIMAL 1500K
         MINEXTENTS 10
         MAXEXTENTS 100);
Причем при создании сегментов отката надо придерживаться следующих формул:
Размер Rollback Segments = Размер самой большой таблицы базы данных / 10
Число экстентов = MINEXTENTS = 10
Размер экстента = INITIAL = NEXT = Размер Rollback Segments / Число экстентов
OPTIMAL >= INITIAL + (NEXT * (MINEXTENTS - 1))

Прежде чем транзакции смогут использовать созданный сегмент отката, его необходимо перевести в состояние ONLINE следующей командой:
ALTER ROLLBACK SEGMENT Имя сегмента отката ONLINE;



prev next
Hosted by uCoz