Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como lidar com grandes transações no Oracle?


O Oracle cria um cursor para cada conjunto de resultados e o libera ao fechar o conjunto de resultados (jdbc ResultSet.close() ou similar). O padrão de 50 cursores abertos por sessão é suficiente para qualquer aplicativo bem projetado (uma vez que eu o medi, e no modo de produção ele nunca ultrapassou 20).

Você deve verificar como fazer o Hibernate fechar os conjuntos de resultados após a busca. Geralmente, não consigo imaginar o que a sessão deve fazer se realmente exigir 1000 cursores abertos. Eu nunca vi max_open_cursors mais de 1000 definidos, então, eu acho, é o suficiente para aplicativos mal projetados também (mas ... não há limite para a perfeição de fato sóbrio, e eu nunca uso o Hibernate).

Cada cursor significa alguma memória, portanto, aumentar max_open_cursors não é uma solução alternativa de preço zero.