Запуск Oracle 18c на виртуальной машине Windows 2012R (VMWare). (У меня нет доступа ни к одному из инструментов администрирования виртуальной машины.)
ВМ имеет 5 виртуальных ЦП и 12 ГБ оперативной памяти (предположительно, это была рекомендация команды ВМ для снижения конкуренции за ЦП...). Однако я заметил, что объем выделенной памяти (используемой Oracle) значительно превышает объем доступной оперативной памяти машины.
v$memory_target_advice
не намекает на какие-либо улучшения за счет увеличения целевого объема памяти...
Вопросы
- Означает ли это, что большая часть Oracle находится в файле подкачки?
- Поскольку эти 3 ГБ все еще доступны, означает ли это, что если Oracle понадобится (или если Windows решит, что Oracle следует разрешить доступ) дополнительная оперативная память, она сможет это сделать? (То есть не нужно ничего менять?)
решение1
В оптимизаторе Oracle была ошибка, из-за которой он плохо рассчитывал память, необходимую для сортировки данных. Этот плохой расчет привел к выделению огромного объема памяти, во многих случаях превышающего доступный объем. Это не означает, что он когда-либо использовал эту память, поэтому она была выделена в файле подкачки, но никогда не использовалась.
Однако утверждается, что эта ошибка была исправлена в версии 12. Возможно, она все еще присутствует.
Другая возможность заключается в том, что у Oracle есть утечка памяти. Вы можете проверить это, сразу после перезагрузки проверив выделенную память после запуска Oracle и после выполнения SELECT.
Если ваши тесты указывают на ошибку в распределении памяти Oracle, вам следует сообщить об этом.