Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Для платформ Windows это соотношение следующее: гранула равна 4М при SGA < 128М, иначе – 8М.




 

Каждая гранула в один момент времени может быть распределена одной области SGA, она неделима. В самом простом случае достаточно иметь в SGA 3 гранулы:

 

- Одну для фиксированной области SGA (включая редо-лог буфер). Эта область не может быть изменена динамически;

- Одну для разделяемого пула;

- Одну для кэша данных.

 

При запуске экземпляра Ораклу выделяется область памяти для SGA, базирующаяся на значении параметра SGA_MAX_SIZE и доступной памяти ОС. Параметр SGA_MAX_SIZE определяет максимальное значение объема ОЗУ, которое может использовать экземпляр для SGA. Он, как и параметры, определяющие размер каждой из областей, округляется до размера, кратного размеру гранулы (кроме фиксированной области и редо-буфера). Каждой области выделяется целое число гранул.

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

Если же SGA_MAX_SIZE указан явно, и его значение больше, чем сумма размеров областей SGA, то разница между этими значениями и будет представлять собой доступные для расширения областей SGA гранулы. Если же указанный явно размер SGA_MAX_SIZE меньше, чем сумма областей SGA, то значение SGA_MAX_SIZE, указанное в файле параметров, игнорируется и SGA_MAX_SIZE принимает значение, равное сумме размеров областей SGA, подобно тому, как это происходит в случае, когда SGA_MAX_SIZE не указывается явно.

SGA_MAX_SIZE нельзя изменять динамически.

 

Пример 1

Значения параметров инициализации: SGA_MAX_SIZE = 144M

Память, используемая для фиксированных областей: 16 MB

Максимально допустимый объем для разделяемого пула и кэша данных: 144-16= 128 MB

DB_CACHE_SIZE = 96M

SHARED_POOL_SIZE = 32M

 

Теперь пробуем увеличить разделяемый пул на 32М

SQL> alter system set shared_pool_size=64M;

alter system set shared_pool_size=64M

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-04033: Insufficient memory to grow pool

 

Операция закончилась неуспешно, потому что недостаточно свободных гранул.

Уменьшим кэш данных на 32М:

 

SQL> alter system set db_cache_size=64M;

 

System altered.

 

Повторим неудавшуюся операцию:

 

SQL> alter system set shared_pool_size=64M;

System altered.

 

DB_CACHE_SIZE = 64M

SHARED_POOL_SIZE = 64M

 

Пример 2

Значения параметров инициализации:



 

SGA_MAX_SIZE = 256M

DB_CACHE_SIZE = 96M

SHARED_POOL_SIZE = 32M

 

SQL> alter system set shared_pool_size=64M;

System altered.

 

Необходимо отметить, что уменьшение размера используемой области SGA (особенно разделяемого пула) может занять продолжительное время. Дело в том, что при попытке уменьшения размера происходит определение списка гранул, которые будут освобождены. Но их освобождение произойдет только после того, как они не будут содержать необходимых пользователям данных, т.е. должны завершиться транзакции и сессии, использующие эти ресурсы. А это может занять какое-то время. В случае с кэшем данных это происходит проще: блоки, которые занимают помеченные для освобождения гранулы, сбрасываются на диск.

 

Замечание:


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал