Oracle opretter markøren for hvert resultatsæt og frigiver den ved lukning af resultatsættet (jdbc ResultSet.close() eller lignende). Standard på 50 åbne markører pr. session er nok til enhver veldesignet applikation (når jeg først målte den, og i produktionstilstand steg den aldrig over 20).
Du bør tjekke, hvordan du får Hibernate til at lukke resultatsæt efter hentning. Generelt kan jeg ikke forestille mig, hvad session skal gøre, hvis det virkelig kræver 1000 åbne markører. Jeg har aldrig set max_open_cursors mere end 1000 sæt, så det er vel også nok til dårligt designede applikationer (men... der er ingen grænse for perfektion i nøgtern kendsgerning, og jeg bruger aldrig Hibernate).
Hver markør betyder noget hukommelse, så at øge max_open_cursors er ikke en løsning til nulpris.