Executando o Oracle 18c em uma VM Windows 2012R (VMWare). (Não tenho acesso a nenhuma das ferramentas de administração de VM.)
A VM tem 5 vCPU e 12 GB de Ram (esta foi supostamente a recomendação da equipe de VM para reduzir a contenção de CPU...). No entanto, estou notando que a memória comprometida (usada pela Oracle) é significativamente maior que a RAM disponível para a máquina .
v$memory_target_advice
não está sugerindo nenhuma melhoria aumentando a meta de memória ...
Questões
- Isso significa que grande parte do Oracle está em arquivo de paginação?
- Sendo que 3 GB ainda estão disponíveis, isso significa que se a Oracle precisasse (ou se o Windows decidisse que a Oracle deveria ter permissão para acessar) memória RAM extra, ela seria capaz? (Significa que não há necessidade de mudar nada?)
Responder1
A Oracle costumava ter um bug em seu otimizador que fazia com que ele calculasse mal a memória necessária para classificar os dados. Esse cálculo incorreto fez com que ele alocasse uma quantidade enorme de memória, em muitos casos mais do que a quantidade disponível. Isso não quer dizer que ele alguma vez tenha usado essa memória; portanto, ela foi alocada no arquivo de paginação, mas nunca foi usada.
No entanto, afirma-se que esse bug foi corrigido na versão 12. Uma possibilidade é que ele ainda esteja presente.
Outra possibilidade é que o Oracle tenha um vazamento de memória. Você pode testar isso imediatamente após uma reinicialização, verificando a memória comprometida após o Oracle iniciar e após fazer o SELECT.
Se seus testes apontarem para um bug na alocação de memória do Oracle, você deverá reportá-lo.