Laden...

Oracle - Timeout bei Verbindung

Erstellt von Bratwurstexe vor 2 Jahren Letzter Beitrag vor 2 Jahren 797 Views
Bratwurstexe Themenstarter:in
24 Beiträge seit 2021
vor 2 Jahren
Oracle - Timeout bei Verbindung

Info zur Datenbank

  • OCI: Version 11.1
  • Oracle Server Version PL/SQL Developer 11g Release 11.2.0.3.0
  • DLL: C:\OracleInstantClient\oci.dll

Die erforderlichen Daten für den "ConnectionString" habe ich mir aus der tnsnames.ora auf dem Server genommen.

Problembeschreibung

Hallo zusammen,
ich bekomme beim Ausführen (Klick auf den Button1) nach einer kurzen Zeit von etwa 15 Sekunden folgende Timeout Fehlermeldung:

Fehlermeldung:
Ausnahme ausgelöst: "Oracle.ManagedDataAccess.Client.OracleException" in Oracle.ManagedDataAccess.dll
Eine externe Komponente hat eine Ausnahme ausgelöst.

"OraConnect.exe" (CLR v4.0.30319: OraConnect.exe): "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies\Runtime\Microsoft.VisualStudio.Debugger.Runtime.Desktop.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Das Programm "[24004] OraConnect.exe" wurde mit Code -1 (0xffffffff) beendet.

Leider konnte ich dazu nichts finden und mich würde interessieren warum ich diese Fehlermeldung bekomme bzw. Wo ich ansetzen kann um das Problem zu lösen und eine Verbindung aufgebaut bekomme.

Für Ideen wäre ich euch sehr dankbar. 🙂


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client; 
using System.Configuration;
using System.Diagnostics;


//OCI: version 11.1
// Oracle Server Version PL/SQL Developer 11g Release 11.2.0.3.0
// DLL C:\OracleInstantClient\oci.dll



namespace OraConnect
{
    public partial class Form1 : Form
    {

        OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            
            con.Open();    
            MessageBox.Show("Connected");
            con.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            con.Close();
            Close();
        }
    }
}

App.Config


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

	
	
	<connectionStrings>

		<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />
		
		
	</connectionStrings>

16.807 Beiträge seit 2008
vor 2 Jahren

Timeouts sind meistens Verbindungsprobleme, zB Netzwerk, Firewall...

Bratwurstexe Themenstarter:in
24 Beiträge seit 2021
vor 2 Jahren

Timeouts sind meistens Verbindungsprobleme, zB Netzwerk, Firewall...

Das ist mir bewusst. Ich habe (hätte ich natürlich vorher dazu schreiben sollen) Die Verbindung von meinem Client zu der Datenbank getestet und hatte hier keinerlei Probleme mit der Verbindung.

Die Frage ist natürlich, warum bekomme ich keine Verbindung aus meinem Programm heraus?

Könnte jemand evtl. einmal über meinen ConnectionString schauen? Evtl. habe ich hier einen Fehler?


<connectionStrings>

		<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />


	</connectionStrings>

16.807 Beiträge seit 2008
vor 2 Jahren

Dein Client muss nich zwangsläufig die gleiche Verbindungsart haben; es gibt mehrere.
Welchen String Du benötigst kannst Du der Anleitung Deines Providers zusammen mit den Settings des Servers (die kennen wir nicht) entnehmen: ConnectionStrings.com - Forgot that connection string? Get it here!

PS: seit Dir bewusst, dass man neue Applikationen nicht unbedingt mit dem .NET Framework entwickeln sollte.
Dieses wurde mit Version 4.8 abgekündigt. Die neue Welt nennt sich .NET 5 (und höher); auch mit neuen Visual Studio Templates.

Bratwurstexe Themenstarter:in
24 Beiträge seit 2021
vor 2 Jahren

Hallo Abt,

Es lag tatscächlich an einem falschen ConnectioonString

Ich habe jetzt folgenden benutzt und ich bekomme jetzt eine Verbindung zur Datenbank.


<add name="con" connectionString="Data Source=b*******;Persist Security Info=True;User ID=b*******;Password=**********;Unicode=True" providerName="System.Data.OracleClient"/>

16.807 Beiträge seit 2008
vor 2 Jahren

Manchmal sind es die einfachsten Dinge 🙂
Aber gut, dass es nun klappt!