Como parte de la actualización de JRun, pasamos de una JVM 1.4 a una JVM 1.6. Ahora obtengo un error de oráculo db realmente extraño: "OALL8 está en un estado incoherente". He definido el problema para insertar consultas que no usan variables de vinculación: todos los parámetros en línea. Si ejecuto la consulta sin variables de vinculación, obtengo el error anterior. Tan pronto como reemplazo uno de los valores codificados con una variable de vinculación, todo funciona sin error.Oracle: OALL8 está en un estado incoherente
El otro bit extraño es que después de ejecutar la consulta, de hecho está comprometida con la base de datos. Puedo conectarme desde otra sesión y ver la fila insertada. He intentado ajustar la consulta en una transacción y parece tener éxito ya que el comportamiento no se modifica desde la consulta sin una transacción explícita.
Éstos son los detalles relevantes:
la versión de Java 1.6.0_12-B04:
Virtual Machine Versión: 11.2-b01 (HotSpot Server)
servidor Oracle: 10.2.0.4
cliente de Oracle: 11.1. 0.7.0 a través de ojdbc6.jar
Actualización: Estoy usando cfqueryparam - se llaman variables de vinculación en el mundo de Oracle. Si bien eso resuelve el problema inmediato, tenemos una base de código heredada bastante grande que no podemos revisar de manera realista para actualizar las consultas como parte de la actualización de CF7 a CF8.
Aunque he definido una situación específica que falla (y la encapsulé en una prueba de mxunit), eso no significa que no haya otras áreas donde esto pueda ser un problema. Realmente me gustaría tener una solución que elimine el error OALL8 en lugar de codificarlo.
Actualización 2: Después de consultar con nuestro DBA había establecido un parámetro llamado CURSOR_SHARING en SIMILAR. El valor predeterminado de Oracle es EXACTO. Lo que sucede es que cuando ColdFusion entrega la consulta para que se ejecute, Oracle está convirtiendo todos los valores literales para vincular variables y eso parece confundir a ColdFusion. Al volver la configuración a EXACT, permite que las consultas literales funcionen correctamente.
Actualización 3: Oracle finalmente nos envió un parche fuera de banda para JDBC. Fue identificado como un error JDBC. Los últimos controladores deberían incluirlo cuando finalmente se actualicen. Si tiene soporte, también puede solicitar el parche a través de su sistema TAR.
Irónicamente, esta página es una de las 10 mejores resultados de google. –