Oracle: OALL8 in einem inkonsistenten Zustand ist
Als Teil der Modernisierung JRun, wir bewegen uns von einem 1.4 JVM a JVM 1.6. Jetzt bin ich immer ein komisches oracle-db-Fehler: "OALL8 ist in einem inkonsistenten Zustand". Ich habe niedergerungen, das problem zu Abfragen einfügen, die nicht mit bind-Variablen an alle - alle inline-Parameter. Wenn ich die Abfrage ausführen ohne bind-Variablen, ich bekomme den oben genannten Fehler. Sobald ich das ersetzen einer der hart codierten Werte mit einer bind-variable - funktioniert alles ohne Fehler.
Den anderen bisschen seltsam ist, dass nach dem ausführen der Abfrage, es ist in der Tat an die Datenbank übergeben. Ich kann eine Verbindung aus einer anderen Sitzung und finden Sie in der eingefügten Zeile. Ich habe versucht, das einwickeln der Abfrage in einer Transaktion, und es scheint zu gelingen, wie das Verhalten ist unverändert aus der Abfrage, ohne eine explizite Transaktion.
Hier sind die relevanten details:
Java-Version: 1.6.0_12-b04
Virtuellen Maschine Version: 11.2-b01 (HotSpot Server)
Oracle-Server: 10.2.0.4
Oracle Client: 11.1.0.7.0 durch ojdbc6.jar
Update: ich bin mit cfqueryparam - Sie sind sogenannte bind-Variablen in der oracle-Welt. Während Sie das tut, lösen das unmittelbare problem, wir haben ein ziemlich großes legacy-code-Basis, können wir nicht realistisch gehen Sie durch alle zur Aktualisierung der Abfragen als Teil der Modernisierung von CF7, um CF8.
Obwohl ich fixiert eine bestimmte situation scheitert (und kapselt es in eine mxunit-test) - das bedeutet nicht, dass es nicht andere Bereiche, in denen dies ein Problem sein kann. Ich würde wirklich gerne eine Lösung, die beseitigt die OALL8 Fehler, anstatt Codierung um ihn herum.
Update 2: Nach der Prüfung mit unseren DBA-er hatte festgelegt, parameter CURSOR_SHARING zu ÄHNLICH. Die Oracle Standard ist EXAKT. Was passiert, wenn ColdFusion Hände die Abfrage aus, um ausgeführt zu werden, ist Oracle drehen alle Literale Werte zur bind-Variablen und erscheint verwirrend ColdFusion. Drehen Sie die Einstellung zurück, um EXAKTE ermöglicht die wörtliche Abfragen funktionieren einwandfrei.
Update 3: Oracle schließlich erteilt Sie uns eine out-of-band-patch für JDBC. Es wurde festgestellt, dass es ein JDBC-Fehler. Die neuesten Treiber beinhalten sollte Sie, wenn Sie dann endlich aktualisiert. Wenn Sie Unterstützung können Sie auch nach dem patch durch Ihre TAR-system.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So... verwenden Sie bind-Variablen?
Sollten Sie mit Ihnen (über
cfqueryparam
) für Sicherheit trotzdem, und wenn es das problem löst, dass sogar ein Grund mehr, so zu tun.Wenn Sie daran interessiert sind, was der tatsächliche Fehler bedeutet, Google hat viel der Ergebnisse, was darauf hindeutet, dass es ein Fehler ist, mit dem JDBC-Treiber, und schlägt sogar vor, eine patch ist verfügbar.
Aber ich sehe nicht eine wirkliche Frage in deinem post...?
fand ich diese http://asanga-pradeep.blogspot.com/2008/06/oall8-is-in-inconsistent-state-with.html
Oracle Patch 4390875
Wenn Sie Anwendungen in weblogic, sollten Sie kopieren ojdbc.jar zum installieren von directory "weblogic81\server\lib" , decken die den gleichen Namen Datei.