Oracle създава курсор за всеки набор от резултати и го освобождава при затваряне на набора от резултати (jdbc ResultSet.close() или подобен). По подразбиране 50 отворени курсора на сесия са достатъчни за всяко добре проектирано приложение (веднъж го измерих и в режим на производство никога не е надвишавал 20).
Трябва да проверите как да накарате Hibernate да затваря набори от резултати след извличане. Като цяло не мога да си представя какво трябва да прави сесията, ако наистина изисква 1000 отворени курсора. Никога не съм виждал max_open_cursors повече от 1000, така че, предполагам, това е достатъчно и за приложения с лош дизайн (но... няма ограничение за съвършенството в трезвия факт и никога не използвам Hibernate).
Всеки курсор означава малко памет, така че увеличаването на max_open_cursors не е заобиколно решение с нулева цена.