10
votes

So I am connecting to an external server through C#. I just installed Oracle 11g client on my machine from here: http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html (255MB one).

After reading many blogs/questions I found this article to be useful:

http://dbaspot.com/oracle-faq/444787-ora-12541-tns-no-listener.html

So is this correct? I cannot do anything. The DBA has to edit the LISTENER.ORA file?

My tnsnames.ora looks like this:

  TestingConnect=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TEST)
    )
  )

It is throwing me the err at:

Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection();

connection.ConnectionString = "Data Source=TestHostName.us.local;Persist Security Info=True;" + "User ID=tesName;Password=test";

connection.Open() //Throwing ERR!!!

What should I do? I appreciate any comments. Thanks!

2
Are you sure that your hostname "TestHostName.us.local" is correct? Did you check with "tnsping TestingConnect" from the command line whether the database is reachable?Andreas Fester
There are many reasons for this error. If you want to eliminate having to have a TNSNames.ora entry you could try using the TNS-less connection string. see ... connectionstrings.com/oracle just to see if this works. This may not fix the problem but it would eliminate the TNSNames.ora as the problem.Gene S

2 Answers

9
votes

You can do this a couple of ways: Using your TNSNames file the data source should specify the TNSHosts entry name (the bit before the first "=" from the tnsnames.ora), not the host name:

connection.ConnectionString = "Data Source=TestingConnect;Persist Security Info=True;" + "User ID=tesName;Password=test"; 

Or you can put the entire TNS entry in the connection string like so:

connection.ConnectionString = "Data Source=(DESCRIPTION = " +
    "(ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))" +
    "(CONNECT_DATA =" + 
    "(SERVER = DEDICATED)" + 
    "(SERVICE_NAME = TEST))" + 
    ");Persist Security Info=True;User ID=tesName;Password=test"; 
7
votes

Thanks for all your input. I changed my connection string and it worked. Here its what looks like:

 private static string GetConnectionString()
    {
        return "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=TestHostName.us.local)(PORT=1523) ) )" +
               "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CCDB)));User id=UserName; Password=Password; enlist=false; pooling=false;";
    }