Die Anzahl der ODP's im Job ist auch beschränkt (irgendwo zwischen 32K und 64K).
Mir stellt sich da eher die Frage, warum die ODP's nicht wiederverwendet werden können.

Normales Vorgehen:
1. OPEN CURSOR => OPEN ODP
1. CLOSE CUROR => CLOSE ODP
2. OPEN CURSOR => OPEN ODP
2. CLOSE => wenn 2. Open dem 1. Open entspricht, dann kein CLOSE ODP, ansonsten CLOSE ODP

Dies gilt besonders bei dynamischen SQL's mit variablen Statements, die sich eben von Aufruf zu Aufruf ändern.
Irgendwann wird wohl der Open fehlschlagen da die Ressourcen erschöpft sind und das Programm je nach Fehlerabfrage dann eher "Keine Daten" melden an Stelle eines Programmabbruchs.

Ein 2. Open Cursor ist nicht möglich, wenn der Cursor vorher nicht geschlossen ist.
Cursor lassen sich nun mal vom Namen nicht dynamisieren (außer bei CLI).

Hier gilt es eben zu prüfen:
Wird jedes Mal die selbe Openart verwendet?
Wenn ja kann es sich um einen Fehler im OS handeln.
Wenn nein, warum wird der selbe Open aber mindestens 2 Mal gemacht so dass der ODP erhalten bleibt?

Ansonsten:
Alle SQL-Einstellungen betreffen ausschließlich die Cursor und nicht die ODP's.
ODP's können nur explizit mit einem Beenden der ACTGRP oder RCLACTGRP geschlossen werden.