Pregunta

Soy nuevo en Oracle, y hay un problema que estoy enfrentando. Cuando ejecuto la aplicación de IDE - Visual Studio 2005, la conexión de la base de datos se establece sin problemas, pero cuando ejecuto una versión instalada de la aplicación, la conexión DB falla y obtengo un TNS: Conectar el tiempo de espera ocurrido.

Lo intenté con SQLNET.ORA y soluciones similares que se encuentran en línea, pero no pude resolver el problema. Me pregunto por qué sucede esto, ya que la aplicación que se ejecuta a través del IDE y a través de una instalación está en la misma PC. Me aseguré de que el archivo TNSNames.ora se editará correctamente, y puedo conectarme a través de una instancia de la aplicación que se ejecuta directamente en Visual Studio.

public bool connectToDatabase(string dbConnStr)
{
    try
    {
        databaseConnection = dbConnStr;
        OracleConnection dbConn = new OracleConnection(databaseConnection);
        if (dbConn == null)
        {
            CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "Connection object is null");
            return false;
        }
        if (dbConn.State.ToString().Equals("Closed", StringComparison.OrdinalIgnoreCase))
        {
            CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB connection - " + dbConn.ConnectionString);
            dbConn.Open();
            return true;
        }
    }
    catch (Exception ex)
    {
        CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, ex.Message + "\n" + ex.StackTrace);
        CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB String - " + databaseConnection);

        return false;
    }
    return false;
}

La traza de pila lee así:

7/22/2010 6:38:51 PM    ORA-12170: TNS:Connect timeout occurred
   at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
   at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
   at Oracle.DataAccess.Client.OracleConnection.Open()
   at SQL.connectToDatabase(String dbConnStr)

El tnsnames.ora es algo así:

MySource =
  (DESCRIPTION =
    (CONNECT_TIMEOUT=180)(RETRY_COUNT=2)
    (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 125.63.77.232)(PORT = 1521)))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MySource )
    )
  )

Mientras tanto, me estaba publicando un error de contextualización con el depurador, así que seguí las instrucciones y cambié el atributo de Stathread a MtathRead en Main (). No más contextswitchdeadlock - y aún así, el problema de la conexión persiste.

Esperaba que pudieras arrojar algo de luz sobre el tema, estoy cerca de sacar mi cabello. Cualquier idea sería apreciada.

¿Fue útil?

Solución

Se resolvió el problema.¡Muchas gracias por su ayuda, todos!:) Resultó ser una combinación de DLL de ODAC corruptos y luego algunos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top