ORA-04031
Memória insuficiente no shared pool
O que significa
Sem chunk contíguo na SGA (shared/large pool). Clássico de excesso de SQL com literais (sem bind variables) fragmentando a library cache; também subdimensionamento.
Ação imediata
Verifique se é fragmentação (muitos SQLs quase iguais) ou falta real de memória.
Como diagnosticar somente leitura — seguro de executar
V$SGASTAT (free memory por subpool)
- V$SHARED_POOL_ADVICE
SELECT force_matching_signature, COUNT(*) FROM v$sql GROUP BY 1 ORDER BY 2 DESC (literais)
- AWR: hard parses/s.
Correção definitiva
Bind variables na aplicação (paliativo: CURSOR_SHARING=FORCE); aumentar SGA_TARGET/SHARED_POOL_SIZE.
Como prevenir
Padronizar binds; monitorar hard parse e uso por subpool.
Nota de versão
Em multitenant, verifique também limites de memória por PDB (MEMORY_LIMIT em 19c+).