Oracleは、すべての結果セットにカーソルを作成し、結果セットを閉じるとカーソルを解放します(jdbc ResultSet.close()など)。適切に設計されたアプリケーションでは、セッションごとにデフォルトの50のオープンカーソルで十分です(一度測定すると、本番モードでは20を超えることはありません)。
フェッチ後に結果セットを閉じるようにHibernateを作成する方法を確認する必要があります。一般に、実際に1000個のオープンカーソルが必要な場合、セッションで何をすべきか想像できません。 max_open_cursorsが1000セットを超えることは一度も見たことがないので、設計の悪いアプリケーションにも十分だと思います(ただし、実際には完璧に制限はなく、Hibernateを使用することもありません)。
すべてのカーソルはある程度のメモリを意味するため、max_open_cursorsを増やすことはゼロ価格の回避策ではありません。