Разница между SGA_target и общей глобальной областью системы

Я работаю над базой данных в памяти Oracle 12c, для этого я увеличиваю MEMORY_TARGET до 32 ГБ, что соответствует размеру моей общей файловой системы. Когда я перезапускаю базу данных Oracle, отображается общая глобальная область системы = 3.3286E+10 байт, но после этого, когда я использую команду ALTER SYSTEM SET SGA_TARGET = 28G SCOPE= SPFILE;, система выдает ошибку Specified value of MEMORY_TARGET is too small, needs to be at least 35136M.

Есть ли разница между SGA_target и Total System Global Area? а что это такое?


person kadsank    schedule 25.10.2016    source источник
comment
Сообщение об ошибке и команда не совпадают. Похоже, вы действительно пытались установить для MEMORY_TARGET значение меньше общего или SGA_TARGET и PGA_AGGREGATE_TARGET. Это может помочь.   -  person Alex Poole    schedule 25.10.2016
comment
Значение sga_target управляет общей глобальной областью системы. Проверьте это.   -  person learningloop    schedule 27.10.2016


Ответы (2)


SGA_Target — это размер SGA, не включая PGA. Memory_Target включает в себя оба. Если PGA_target + SGA_Target > Memory_Target, вы можете получить эту ошибку. Взгляните на это и это.

person Joe    schedule 27.10.2016
comment
Вы правы в «SGA_Target — это размер SGA, не включая PGA», но НЕПРАВИЛЬНО в «PGA_target + SGA_Target — › Memory_Target». На самом деле вы используете sga_target › 0, у вас должно быть memory_target = 0 и наоборот, чтобы указать, что вы намерены использовать ASMM или AMM. Ни одна из упомянутых ссылок не подтвердила это. - person pahariayogi; 02.11.2016
comment
На самом деле первая ссылка поддерживает мой ответ. Я должен был написать pga_aggregate_target. PGA_Target отсутствует. Если memory_target ‹ (sga_target + pga_aggregate_target), экземпляр не сможет начать возвращать ошибку ORA-00838. - person Joe; 03.11.2016
comment
Я думаю, что если вы сослались на этот текст из первой ссылки … «Параметр memory_target объединяет значение параметра sga_target до Oracle 11g с параметром pga_aggregate_target. …» Это должно дать администратору базы данных представление о том, как предварительно вычислить «memory_target», если вы собираетесь переключиться с ASSM на AMM. - person pahariayogi; 03.11.2016
comment
Вы увидите то же самое и здесь docs.oracle.com/cd/ B28359_01/server.111/b28310/memory003.htm memory_target = sga_target + max(pga_aggregate_target, максимальный выделенный PGA) Однако это не означает, что memory_target всегда должен быть > 0, даже если я намереваюсь использовать ASSM (sga_target, sga_max_size, pga_aggregate_target). Я указал, что все мои серверы настроены на параметры sga_xxx › 0, но memory_target по-прежнему имеет значение 0. Но я не вижу ORA-00838 при запуске БД. - person pahariayogi; 03.11.2016
comment
При использовании AMM параметры SGA_TARGET и PGA_AGGREGATE_TARGET действуют как параметры минимального размера для соответствующих областей памяти. Однако, чтобы позволить Oracle получить полный контроль над управлением памятью, эти параметры должны быть равны нулю. - person pahariayogi; 03.11.2016
comment
Да, IF memory_target имеет значение 0. Если это не так, вы получаете ошибку. Это оригинальный, правильный ответ на вопрос о плакатах. Вы толком не ответили на вопрос о постере - вы сказали ему, как его решить. Что тоже полезно. Я попытался ответить на вопрос. Я согласен с тем, что если кто-то устанавливает цели SGA или PGA, для memory_target следует установить значение 0, как в ваших системах, так и в моей. Проблема в том, что плакат установил его на 32 ГБ И устанавливает SGA, и я думаю, что SGA Plus PGA — это › memory_target и, следовательно, ошибка. - person Joe; 03.11.2016
comment
Я понимаю вашу точку зрения. Я не думаю, что можно увидеть ORA-00838, кроме как при запуске базы данных. Я думаю, что плакат либо опубликовал неверную информацию, либо в неправильном порядке. @kadsank - Вы можете запустить БД? Можете ли вы поделиться выводом «целевых параметров показа» и «памяти параметров показа»? - person pahariayogi; 04.11.2016
comment
Вы правы - ORA-00838 будет виден при запуске. OP получает ошибку, потому что он меняет настройку, когда сервер работает - пытается записать недопустимые параметры инициализации в SPFILE, и сервер не позволяет ему это сделать, потому что его memory_target не равен 0 - согласно вашей предыдущей точке и SGA + PGA › память_цель. Как вы сказали выше, он должен установить для memory_target значение 0, тогда он сможет делать то, что хочет. - person Joe; 05.11.2016

Вы не должны изменять sga_target, если собираетесь использовать memory_target. Вам следует выбрать управление памятью AMM (memory_target) или ASMM (sga_target, pga_aggregate_target) для вашего экземпляра БД и соответствующим образом настроить параметры БД.

Есть ли разница между SGA_target и Total System Global Area? а что это такое?

К сведению: глобальная область системы — это SGA, состоящая из нескольких подкомпонентов памяти. sga_target позволяет оракулу динамически выделять память для системной глобальной области (SGA).

--ИЗМЕНИТЬ

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

person pahariayogi    schedule 02.11.2016
comment
Кроме того, в режиме соединения Shared Server PGA перемещается в SGA, так что это необходимо учитывать. - person Joe; 03.11.2016