sql >> Database teknologi >  >> RDS >> Oracle

ORA-01000:maksimale åbne markører overskredet ved brug af Spring SimpleJDBCCall

Efter mange tests har vi løst dette problem. Det er en kombination af, hvordan vi brugte springrammerne og oracle-klienten og oracle DB. Vi var ved at oprette nye SimpleJDBCCalls, som brugte oracle JDBC-klientens metadatakald, som blev returneret som markører, der ikke blev lukket og ryddet op. Jeg betragter dette som en fejl i Spring JDBC-rammerne i, hvordan det kalder metadata, men derefter ikke lukker markøren. Spring bør kopiere metadataene ud af markøren og lukke dem korrekt. Jeg har ikke gidet at åbne et jira-problem med fjeder, for hvis du bruger bedste praksis, vises fejlen ikke.

Justering af OPEN_CURSORS eller en af ​​de andre parametre er den forkerte måde at løse dette problem på og forsinker det blot i at blive vist.

Vi arbejdede omkring det/rettede det ved at flytte SimpleJDBCCall til en singleton DAO, så der kun er én markør åben for hver oracle proc, som vi kalder. Disse markører er åbne i hele appens levetid - hvilket jeg betragter som en fejl. Så længe OPEN_CURSORS er større end antallet af SimpleJDBCCall-objekter, vil der ikke være besvær.



  1. Regneark vs. databaser:Er det tid til at skifte? Del 2

  2. Tegn med bytesekvens 0x9d i kodningen 'WIN1252' har ingen ækvivalent i kodningen 'UTF8'

  3. Gruppér fortløbende værdier i MySQL og tilføj et id til sådanne grupper

  4. At få betinget tæller videre til samme række i MySQL / SQL