БД Oracle на Солярисе, использующая память подкачки при наличии свободной оперативной памяти - PullRequest
0 голосов
/ 03 февраля 2011

У нас есть странный случай, когда мы заметили, что использование сервера подкачки баз данных oracle составило 100%, и удивились, увидев, что в этот период в системе была свободная память.Насколько мне известно, использование подкачки памяти начинается, когда в системе заканчивается свободное ОЗУ (исправьте меня, если я ошибаюсь).Не уверен, что могло вызвать эту необычную деятельность.Кто-нибудь еще испытывал такое поведение?

Regs,

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Если вы используете Solaris 10 или более позднюю версию, системные параметры больше не находятся в / etc / system.Вместо этого вы настраиваете динамически управляемые ресурсы через «проекты» на уровне зоны, задачи или пользователя.

Вот, например, один из этих файлов конфигурации проекта в одной из наших зон.

system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
user.oracle:100:Oracle:::process.max-sem-nsems=(privileged,256,deny);project.ma-shm-ids=(privileged,256,deny);project.max-shm-memory=(privileged,42949672960,dny)

Приведенные здесь настройки означают, что пользователь имени пользователя oracle получит выгоду от определенного параметра ресурса.

Чтобы задать добавление такой строки в файл проекта, вы используете команду projadd.Чтобы изменить его, введите команду projmod и, если вы хотите перечислить все ресурсы, доступные в настоящее время для oracle, вы должны

  1. su to oracle
  2. , набрав:

    prctl -i project user.oracle

В этом списке перечислены все ресурсы, доступные для этого «проекта».

1 голос
/ 03 февраля 2011

Вы должны предоставить подробную информацию о том, как вы получаете свои метрики, но нет прямой связи между обменом и использованием ОЗУ. Вы, конечно, можете освободить пространство подкачки, если свободная оперативная память по-прежнему доступна.

Для всех (виртуальных) резервирований памяти должно быть достаточно подкачки. Резервирование памяти (т.е. malloc) не использует RAM. ОЗУ требуется только при доступе к виртуальной памяти.

0 голосов
/ 01 мая 2017

БД Oracle, работающая на Solaris, содержит «ошибку». Это «резервирование» подкачки в операционной системе, где «подкачка» и «оперативная память» объединены в один пул виртуальной памяти. Резервирование подкачки просто исчерпывает область подкачки на диске без причины и не должно делать это вообще. Все переходы между оперативной памятью и подкачкой обрабатываются самой ОС Solaris. Мне потребовалось почти 5 лет, чтобы Sun / Oracle поняла ту же самую проблему с Java.

Последние версии Java 7 и 8 больше не "дважды погружаются" в пул памяти.

То, что я обнаружил, в случаях, когда операционная система сталкивается с пределом «Swap», - это соответственно увеличить размер памяти и полностью удалить swap.

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

...