Usamos ODP.NET para realizar consultas en bases de datos Oracle, y normalmente funciona bien. Sin embargo, hay una base de datos particular y una vista particular en esa base de datos que simplemente no podemos completar una consulta desde .NET. Por ejemplo:La consulta de Oracle es lenta (o falla) desde la aplicación .NET pero es rápida desde SQL Developer
SELECT some_varchar_field FROM the_view WHERE ROWNUM < 5;
Si ejecuto esta consulta desde Oracle SQL Developer, termina en menos de un segundo. Si realizo una consulta idéntica desde nuestra aplicación .NET utilizando ODP.NET, se cuelga y finalmente produce un error "ORA-03135: conexión perdida de contacto". Creo que limitarlo a solo unas pocas filas elimina la posibilidad de que sea un problema de FetchSize.
Existen otras consultas que puedo ejecutar con éxito, pero son más lentas desde nuestro programa que desde SQL Developer. De nuevo, me doy cuenta de que SQL Developer solo obtiene datos para las primeras 50 filas inicialmente, pero creo que la condición ROWNUM lo elimina de la ecuación.
¿Qué podría ser diferente acerca de la conexión o el comando que usa Oracle SQL Developer frente al que está usando nuestra aplicación que causaría una diferencia en la velocidad?
Desafortunadamente, no tengo acceso al servidor (que no sea para ejecutar consultas de Oracle en su contra).
Gracias.
ACTUALIZACIÓN: He intentado la misma consulta con el proveedor Oracle de Microsoft y se ejecuta muy rápidamente. Lamentablemente, ese proveedor está en desuso, por lo que esta no es una solución a largo plazo.
En adición a esta MUY respuesta útil, encontré que ejecuta ALTER SESSION SET NLS_COMP = BINARY; ALTER SESSION SET NLS_SORT = BINARIO; establecer la sesión de nuevo su configuración predeterminada. Claro, activa la distinción entre mayúsculas y minúsculas, pero eso no es tan malo como las consultas lentas. –
¿Cómo descubrió que la biblioteca que está utilizando estaba ejecutando esas declaraciones? Estoy teniendo un escenario similar: al instante en Oracle Sql Developer, pero a pocos segundos de la aplicación. Probar exactamente el mismo escenario en Sql Server es realmente más rápido. Tal vez me falta una configuración importante. –