Ich habe eine Anwendung, die Toplink für die Persistenz und die Oracle-Datenbank verwendet. In letzter Zeit hatte ich Leistungsprobleme, insbesondere auf der Ebene der Datenbank/Abfragen. Ich habe ein großes Stück Logik in einer Reihe von Triggern und gespeicherten Prozeduren, schlecht geschrieben, mit Workarounds für das mutierende Triggerproblem. Die Anwendung ist seit ein paar Jahren in Produktion, und das Umschreiben dieses Codes ist die letzte Lösung, wenn man die Bürokratie der Genehmigung für eine neue Version und andere höhere Prioritäten berücksichtigt. Ich suche also nach einer schnellen Lösung.
Eine Lösung zur Verbesserung der Leistung ist die Verwendung von Bindungsvariablen. Mein Problem ist, dass nach dem Hinzufügen von bind-all-variables und cache-all-statements in sessions.xml in toplink, auf einer bestimmten UI, die den beschissenen Code auslöst, und funktionierte einfach gut, bevor Sie diese Konfigurationsänderung, bekomme ich diesen Fehler:
ORA-00036: Maximale Anzahl von rekursiven SQL-Ebenen (50) überschritten
Meine Fragen sind: Warum wird dieser Fehler nur angezeigt, wenn ich die Einstellung bind-variable hinzufüge? Was kann ich tun, damit es mit Bind-Variablen funktioniert, ohne den beschissenen Code zu ändern?