Estou recebendo esse erro em um banco de dados de desenvolvimento. Isso acontece em algumas consultas específicas (inserções e exclusões simples por meio do aplicativo .NET). O banco de dados é usado por um usuário e o erro ocorre independentemente de quanto tempo o banco de dados estava em execução.
O único parâmetro relacionado à memória que é definido é: MEMORY_TARGET = 1.2G
Oracle 11.2 x64 Standard Edition Um Windows Server 2008 R2
A resposta acima é um pouco antiga.
Pode aliviar o problema imediatamente, mas não lidar com a causa raiz. o parâmetro cursor_sharing agora assume 2 valores:
FORÇA ou EXATA. Com EXACT, sua consulta precisará corresponder exatamente para que um cursor (sql com plano de execução) seja reutilizado; com "FORCE", todos os valores em suas consultas são alterados para vincular variáveis. Isso é realmente útil quando seu aplicativo não usa variáveis de ligação. O banco de dados fará isso por você.
Se você já estiver usando cursor_sharing = FORCE. Em seguida, você deve começar a considerar o ajuste da alocação de memória e, dependendo dos parâmetros de memória que o sistema usa, você pode obter uma idéia de onde deve definir esse valor com as seguintes consultas:
Quando SGA_TARGET e SGA_MAX__SIZE / PGA_TARGET e PGA_MAX_SIZE são usados (eles devem corresponder): selecione * de v $ sga_target_advice; selecione * de v $ pga_target_advice;
Seria assim: no meu caso, este é um sistema de pré-produção, não ficará tão bom por muito tempo:
Este é o SGA_TARGET_ADVICE:
A linha onde SGA_SIZE_FACTOR é 1 é a configuração atual. Em um sistema em que a memória está subdimensionada, o aumento em SGA_SIZE e SGA_SIZE_FACTOR deve mostrar uma diminuição drástica em ESTD_DB_TIME e ESTD_DB_TIME_FACTOR. Aumente a memória para um ponto em que aumentar novamente não faça mais uma alteração tão grande no estd_db_time.
No meu caso aqui, com minha carga atual, eu poderia facilmente reduzir o tamanho de SGA_TARGET para 80G sem sofrer um grande impacto. No entanto, reduzi-lo para 57G e menos produziria problemas de desempenho cada vez mais dramáticos.
Quando MEMORY_TARGET é usado:
fonte
Como complemento à resposta anterior, verifica-se que,
ALTER SESSION SET NLS_COMP=LINGUISTIC;ALTER SESSION SET NLS_SORT=GENERIC_M_CI;
por algum motivo, rapidamente esgota a memória. O problema desaparece ao usar outro NLS_SORT.fonte