Oracle ASP.NET: проблема TNS - PullRequest
       9

Oracle ASP.NET: проблема TNS

0 голосов
/ 04 января 2011

Я пытаюсь подключиться к оракулу БД с помощью ASP.NET/C#.

Вот мой код:

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

и вот ошибка, которую я получаю:

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

Вот мой TNSNAMES.ora:

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

Я работаю на Win2k3 сервере R2.

Oracle находится на том же сервере.Это Oracle 11g.

Когда я делаю tnsping, я получаю это:

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)

А вот мой слушатель.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))
    )
  )

Ответы [ 4 ]

4 голосов
/ 05 января 2011

Поместите строковое соединение в 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>

А затем получите строку подключения из web.config:

connection.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDatabase"].ConnectionString;
0 голосов
/ 04 января 2011

Что такое адаптер EZConnect?Возможно, TNSPing и ваш код используют разные драйверы?

Попробуйте использовать IP-адрес вашей базы данных в строке подключения в вашем коде.Это может показать вам, что является причиной проблемы.

0 голосов
/ 04 января 2011

Когда я пытаюсь использовать myComputer.myDomain в качестве источника данных в строке подключения, выдается код ошибки

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

IKK, что такое EZConnect: -)

команда tnsping localhost дает следующее:

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)

Может быть, это поможет: когда я пытаюсь подключить свою БД с помощью SQL Plus, она работает нормально ...

Большое спасибо за вашу помощь.

0 голосов
/ 04 января 2011

Попробуйте использовать TNSPING для диагностики вашей проблемы.Эта утилита находится в вашем каталоге oracle home / bin.

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

...