Frage

Ich versuche, mich mit ASP.net/c# mit meinem DB Oracle zu verbinden.

Hier ist mein Code:

OracleConnection connection = new OracleConnection();
connection.ConnectionString = @"Data Source=ORACLEDB;User id=me;Password=xxxx;";
try
{
   connection.Open();
}
catch (Exception ex)
{
    Console.WriteLine("Exception occurs when connecting to DB : " + ex.Message + ex.StackTrace);
}

Und hier ist der Fehler, den ich bekomme:

ORA-12154: TNS : the identifier could not be solved

Hier ist meine tnsnames.ora:

ORACLEDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = ORACLEDB)
    )
  )

Ich arbeite an einem Win2K3 -Server R2.

Oracle befindet sich auf demselben Server. Es ist Oracle 11g.

Wenn ich ein TNSPing mache, bekomme ich Folgendes:

EZCONNECT adapter used to resolved the alias
Tentative de contact de (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=169.254.216.123)(PORT=1521)))
OK (20 msec)

Und hier ist mein Hörer.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521))
    )
  )
War es hilfreich?

Lösung

Setzen Sie die String -Verbindung in web.config ein:

  <connectionStrings>
    <add name="OracleDatabase"
          connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME= ORACLEDB)));User Id= me;Password= xxx;Persist Security Info=True;"
          providerName="System.Data.OracleClient" />
  </connectionStrings>

Und holen Sie sich die Verbindungszeichenfolge aus dem Web.config:

connection.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDatabase"].ConnectionString;

Andere Tipps

Versuchen Sie, TNSPing zu verwenden, um Ihr Problem zu diagnostizieren. Es ist ein Dienstprogramm in Ihrem Oracle Home/Bin -Verzeichnis.

http://www.orafaq.com/wiki/tnsping

Was ist der Ezconnect -Adapter? Vielleicht verwenden TNSPing und Ihr Code verschiedene Treiber?

Versuchen Sie, die IP -Adresse Ihrer Datenbank in der Verbindungszeichenfolge in Ihrem Code zu verwenden. Dies könnte Ihnen zeigen, was das Problem verursacht.

Wenn ich versuche, myComputer.mydomain als Datenquelle in meiner Verbindungszeichenfolge zu verwenden, gibt es den Fehlercode an

ORA-12504 : TNS : the listener processus didn't obtain SERVICE_NAME in CONNECT_DATA.

Idk was ezconnect ist :-)

Der Befehl tnsping localhost gibt Folgendes:

C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora


Adaptateur TNSNAMES utilisé pour la résolution de l'alias
Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORACLEDB)))
OK (20 msec)

Vielleicht könnte es helfen: Wenn ich versuche, meine DB mit SQL Plus zu verbinden, funktioniert es gut ...

Vielen dank für Deine Hilfe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top