W ramach modernizacji JRun przechodzimy z JVM 1.4 do JVM o wartości 1.6. Teraz dostaję naprawdę dziwny błąd db Oracle: "OALL8 jest w niespójnym stanie". Powiązany problem polegał na wstawianiu zapytań, które w ogóle nie używają zmiennych wiązania - wszystkie parametry śródliniowe. Jeśli uruchomię zapytanie bez żadnych zmiennych wiążących, otrzymam powyższy błąd. Gdy tylko zmienię jedną z wartości zakodowanych za pomocą zmiennej wiążącej - wszystko działa bezbłędnie.Oracle: OALL8 jest niespójny.
Innym dziwnym bitem jest to, że po wykonaniu kwerendy jest on faktycznie zatwierdzony do bazy danych. Mogę połączyć się z inną sesją i zobaczyć wstawiony wiersz. Próbowałem opakować kwerendę w transakcji i wydaje się, że powiodło się, ponieważ zachowanie jest niezmienione od zapytania bez wyraźnej transakcji.
Oto istotne szczegóły:
Wersja Java: 1.6.0_12-B04
wirtualna wersja urządzenia: 11.2-b01 (serwer HotSpot)
Oracle Server: 10.2.0.4
Oracle Client: 11.1. 0.7.0 do ojdbc6.jar
Aktualizacja: Używam cfqueryparam - nazywane są zmiennymi wiążącymi w świecie wyroczni. Chociaż rozwiązuje to natychmiastowy problem, mamy dość dużą starszą podstawę kodu, której nie możemy realistycznie przejrzeć, aby zaktualizować zapytania w ramach aktualizacji z CF7 do CF8.
Mimo że przytwierdziłem jedną konkretną sytuację, która zawiodła (i hermetyzował ją w teście mxunit) - nie oznacza to, że nie ma innych obszarów, w których może to być problem. Naprawdę chciałbym mieć rozwiązanie, które usuwa błąd OALL8, a nie koduje wokół niego.
Aktualizacja 2: Po sprawdzeniu z naszym DBA ustawił parametr o nazwie CURSOR_SHARING na PODOBNY. Domyślna wartość Oracle to EXACT. To, co się dzieje, kiedy ColdFusion oddaje zapytanie do wykonania, Oracle odwraca wszystkie wartości literalne, by wiązać zmienne i wydaje się mylące w ColdFusion. Przywrócenie ustawienia z powrotem na EXACT umożliwia proste działanie literalnych zapytań.
Aktualizacja 3: Oracle w końcu wydało nam łatkę pozapasmową dla JDBC. Został zidentyfikowany jako błąd JDBC. Najnowsze sterowniki powinny uwzględniać je, gdy zostaną w końcu zaktualizowane. Jeśli masz wsparcie, możesz poprosić o łatę za pośrednictwem swojego systemu TAR.
Jak na ironię ta strona jest jednym z 10 najlepszych wyników w Google. –