Pregunta

Estoy intentando conectar a mi base de datos Oracle con ASP.NET/C #.

Aquí está mi código:

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

y aquí está el error que consigo:

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

Aquí está mi TNSNAMES.ORA:

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

Yo trabajo en un servidor win2k3 R2.

Oracle es en el mismo servidor. Es Oracle 11g.

Cuando hago un tnsping, me sale esto:

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)

Y aquí está mi 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))
    )
  )
¿Fue útil?

Solución

Ponga la conexión de cadena en el 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>

Y a continuación, obtener la cadena de conexión desde el web.config:

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

Otros consejos

Trate de usar TNSPING para diagnosticar su problema. Es una utilidad de encontrar en su casa oráculo directorio / bin.

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

¿Cuál es el adaptador EZConnect? Tal vez TNSPing y su código están utilizando diferentes controladores?

Trate de usar la dirección IP de su base de datos en la cadena de conexión en el código. Esto podría mostrar lo que está causando el problema.

Cuando intento utilizar myComputer.myDomain como origen de datos en mi cadena de conexión que proporciona el código de error

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

Idk lo EZConnect es: -)

el comando tnsping localhost dar a este:

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)

Tal vez podría ayudar: cuando intento conectar mi DB utilizando SQL Plus, que funciona bien ...

Muchas gracias por su ayuda.

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