Question

Je suis en train de se connecter à mon DB oracle avec ASP.NET/C #.

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

et est ici l'erreur que je reçois:

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

Voici mon TNSNAMES.ORA:

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

Je travaille sur un serveur Win2k3 R2.

Oracle est sur le même serveur. Il est Oracle 11g.

Quand je fais une tnsping, je reçois ceci:

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)

Et voici mon 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))
    )
  )
Était-ce utile?

La solution

Mettre la connexion chaîne dans le 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>

Et puis obtenir la chaîne de connexion du web.config:

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

Autres conseils

Essayez d'utiliser TNSPING pour diagnostiquer votre problème. Il est un utilitaire qui se trouve dans votre oracle home / bin.

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

Qu'est-ce que l'adaptateur EZConnect? Peut-être TNSPING et votre code utilisent des pilotes différents?

Essayez d'utiliser l'adresse IP de votre base de données dans la chaîne de connexion dans votre code. Cela pourrait vous montrer ce qui cause le problème.

Lorsque je tente d'utiliser myComputer.myDomain comme source de données dans ma chaîne de connexion donne le code d'erreur

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

Idk ce EZConnect est: -)

la commande tnsping localhost donner ceci:

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)

Peut-être que cela pourrait aider: quand j'essaie de connecter mon DB en utilisant SQL Plus, il fonctionne très bien ...

Merci beaucoup pour votre aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top