Finalmente estoy admitiendo la derrota y pidiendo ayuda. Hice todo lo que se me ocurrió para resolver este problema, pero parece que soy incapaz de hacerlo.
Estoy trabajando con: VS2010 C# Oracle 12c ODP.Net Managed121012
He heredado una aplicación que usa el dll de acceso a datos administrado y no administrado. Estaba funcionando hasta que desinstalé Oracle. Luego reinstalé el cliente 11g para una máquina de 64 bits. Inmediatamente me di cuenta de que solo había instalado dataaccess dll para framework 2, pero continué de todos modos. Luego copié todos los dll oci y ora de la carpeta client_1 en el directorio bin de mi aplicación, así como Oracle.DataAccess.dll en mi directorio bin también. También copié Oracle.ManagedDataAccess.dll en esta carpeta.
Mi aplicación se ejecutó correctamente siempre que no cambiara nada en mis conjuntos de datos. Habría seguido felizmente así, excepto que tengo que crear más conjuntos de datos. Cuando traté de agregar un nuevo conjunto de datos, la lista desplegable del asistente de conexión de la fuente de datos estaba en blanco. Luego traté de volver a crear las conexiones, pero solo pude ver los DProviders de .Net Framework. No pude ver el proveedor administrado. En algún momento también recibí este error "no hay ningún proveedor de datos seleccionado actualmente".
Pensando que es porque el proveedor administrado no estaba instalado, desinstalé el cliente 11g e instalé el cliente 12c de 64 bits y copié todos los archivos relevantes en el contenedor de mi aplicación. Agregué las siguientes líneas a mi archivo app.config:
<configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess" />
<system.data> <DbProviderFactories> <remove invariant="Oracle.DataAccess.Client" /> <remove invariant="Oracle.ManagedDataAccess.Client" /> <add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories>
Después de esto, ahora puedo ver algunas de las fuentes de datos antiguas, pero no puedo conectarme a mi base de datos porque aparece el mensaje "Solicitud de conexión agotada". Cuando creo manualmente una nueva conexión, puedo conectarme bien con el proveedor no administrado, pero obtengo un error de tiempo de espera de solicitud de conexión.
Realmente estoy al final de mi cuerda y realmente apreciaría ojos nuevos antes de usar la cuerda.
Gracias por adelantado.
Tuve un problema idéntico después de cambiar al controlador administrado. Incluso escribió una aplicación de prueba utilizando controladores nativos y administrados. La conclusión fue que el controlador administrado necesita mucho más tiempo para abrir una nueva conexión que el controlador nativo. Una solución que funcionó para nosotros fue establecer un tiempo de espera de conexión grande usando una cadena de conexión.
<connectionStrings> <add name="ConnectionString" connectionString="data source=xxxx;user id=xxxx;password=xxxx;persist security info=false;Connection Timeout=120;" /> </connectionStrings>
Vimos este mismo error al hacer algunas pruebas usando la ventana inmediata en Visual Studio. Estuvimos realmente confundidos por un tiempo hasta que ejecutamos el código normalmente (sin usar la ventana inmediata) y el problema desapareció. Entonces, hay algún tipo de interacción con Oracle ManagedDataAccess y la ventana inmediata en Visual Studio que puede causar este error.
Sé que esta no será la respuesta para la mayoría de ustedes, pero espero que sea útil para alguien.