ORA-04031: Unable to allocate N bytes of shared memory
OracleO que significa?
O Oracle não conseguiu alocar memória contígua do tamanho solicitado em um pool de memória compartilhada (geralmente o shared pool ou o large pool). Um componente da SGA está sob pressão de memória.
Por que acontece?
Fragmentação do shared pool devido a muitas instruções SQL únicas sem bind variables (cheias de literais), SHARED_POOL_SIZE insuficiente, conexões concorrentes demais, pacotes PL/SQL grandes, ou dimensionamento incorreto de ASMM/AMM.
Como resolver
Verifique a qual pool a mensagem de erro se refere (shared pool, large pool etc.). Curto prazo: ALTER SYSTEM FLUSH SHARED_POOL (cuidado: em produção isso força o re-parse de todo o SQL, ou seja, uma tempestade temporária de hard parse, e não corrige a fragmentação de forma permanente). Correção permanente: imponha o uso de bind variables (incluindo CURSOR_SHARING), aumente SGA_TARGET / SHARED_POOL_SIZE / LARGE_POOL_SIZE. Fixe na memória os pacotes usados com frequência com DBMS_SHARED_POOL.KEEP. Examine a distribuição de memória com V$SGASTAT.
Mais entradas deste banco
- ORA-01017Invalid username/password; logon denied
- ORA-01555Snapshot too old: rollback segment number too small
- ORA-01652Unable to extend temp segment by N in tablespace
- ORA-12154TNS: could not resolve the connect identifier specified
- ORA-12514TNS: listener does not currently know of service requested in connect descriptor
- ORA-00942Table or view does not exist
- ORA-01031Insufficient privileges