sql >> Databáze >  >> RDS >> Oracle

ORA-01000:maximální počet otevřených kurzorů překročen při použití Spring SimpleJDBCCall

Po dlouhém testování jsme tento problém vyřešili. Je to kombinace toho, jak jsme používali jarní framework a oracle klienta a oracle DB. Vytvářeli jsme nové SimpleJDBCCalls, které používaly volání metadat klienta Oracle JDBC, která se vracela jako kurzory, které nebyly zavírány a čištěny. Považuji to za chybu v rámci Spring JDBC v tom, jak volá metadata, ale pak nezavře kurzor. Spring by měl zkopírovat metadata z kurzoru a správně je zavřít. Neobtěžoval jsem se otevřít problém s jira s pružinou, protože pokud použijete osvědčený postup, chyba se neprojeví.

Vyladění OPEN_CURSORS nebo jakéhokoli jiného parametru je nesprávný způsob, jak tento problém vyřešit a pouze zdržuje jeho zobrazení.

Vyřešili jsme to/opravili to tak, že jsme přesunuli SimpleJDBCCall do singleton DAO, takže pro každý věštecký proces, který voláme, je otevřený pouze jeden kurzor. Tyto kurzory jsou otevřené po celou dobu životnosti aplikace – což považuji za chybu. Dokud bude OPEN_CURSORS větší než počet objektů SimpleJDBCCall, nebudou žádné potíže.



  1. Přidání dílčího dotazu k již velkému dotazu

  2. Podřetězec Mysql

  3. Snažím se spustit mysql-client v Dockeru, ale byl mi odepřen přístup kvůli chybě uživatele

  4. LOAD DATA INFILE Kód chyby:13