I have a program in C# that use ODP.NET dlls:
oci.dll, ociw32.dll, Oracle.DataAccess.dll,
orannzsbb11.dll, oraocci11.dll, oraociicus11.dll,
OraOps11w.dll.
I've got 2 computers. First with whole ODAC package installed, and second without that package. But I have all required dlls in my exe directory, so ODAC is not a problem I think.
The difference between these computers is the path to the TNSNAMES
file.
First: C:\app\OraHome_1\Network\admin\
Second: C:\Oracle\product\11.2.0\client_1\network\admin
On the first computer, the program works fine. But on the second one with the same connection string, I get the error:
cannot open connection (ORA-12154)
Using SQL Plus I can connect on both computers. How can I show my program the proper path to the tnsnames.ora
file?
You can set the TNS_ADMIN
environment variable programmatically. See this page for a step by step. That is if you wanted to change to a specific TNS_NAMES.ORA
file. The Oracle Client must still be installed on the client machine.
From ConnectionStrings - without using TNS:
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
Please see this question which could aid you in finding the current location of the client's TNS_NAMES.ORA
file - which you could open and modify if you wish (add your own connection if it doesn't exist)