Domanda

Sto provando a collegarsi al mio Oracle DB con ASP.NET/C #.

Ecco il mio codice:

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);
}

e qui è l'errore che ottengo:

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

Ecco la mia tnsnames.ora:

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

Io lavoro su un server win2k3 R2.

Oracle è sullo stesso server. E 'Oracle 11g.

Quando faccio un tnsping, ottengo questo:

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)

E qui è il mio listener.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))
    )
  )
È stato utile?

Soluzione

Mettere la stringa di connessione nel web.config:

  <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>

E quindi ottenere la stringa di connessione dal web.config:

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

Altri suggerimenti

Prova a usare TNSPING per identificare il problema. Si tratta di un programma di utilità trovato nel vostro oracle home directory / bin.

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

Qual è l'adattatore EZConnect? Forse tnsping e il tuo codice utilizzano driver diversi?

Prova a usare l'indirizzo IP del vostro database nella stringa di connessione nel codice. Questo potrebbe mostrare che cosa sta causando il problema.

Quando provo ad usare computer.dominio come origine dati nella mia stringa di connessione dà il codice di errore

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

Idk ciò EZConnect è: -)

il comando tnsping localhost dare a questo:

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)

Forse potrebbe aiutare: quando provo a collegare il mio DB utilizzando SQL Inoltre, funziona benissimo ...

Grazie mille per il vostro aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top