Oracle tworzy kursor dla każdego zestawu wyników i zwalnia go po zamknięciu zestawu wyników (jdbc ResultSet.close() lub podobny). Domyślne 50 otwartych kursorów na sesję jest wystarczające dla każdej dobrze zaprojektowanej aplikacji (kiedy ją zmierzyłem i w trybie produkcyjnym, nigdy nie wzrosła powyżej 20).
Powinieneś sprawdzić, jak sprawić, by Hibernate zamykał zestawy wyników po pobraniu. Generalnie nie wyobrażam sobie, co powinna zrobić sesja, jeśli naprawdę wymaga 1000 otwartych kursorów. Nigdy nie widziałem zestawu max_open_cursors więcej niż 1000, więc myślę, że to wystarcza również dla źle zaprojektowanych aplikacji (ale... nie ma granic perfekcji w trzeźwych faktach i nigdy nie używam Hibernate).
Każdy kursor oznacza trochę pamięci, więc zwiększenie max_open_cursors nie jest obejściem zerowej ceny.