简体   繁体   中英

ORA-12557 TNS:protocol adapter not loadable

I am trying to develop a C# Windows Forms Application targeting the .net 4 framework. The program will execute a stored procedure against an Oracle Database and I get the following error when I try to open the connection to the database.

ORA-12557 TNS:protocol adapter not loadable

I am developing this in Visual Studio 2012 and have managed to make the Server Explorer connect to the database successfully, however I keep getting this error through my application.

I have two Oracle 11g clients on my machine. One is 32bit and the other is 64bit. I do need both for different applications so it is not possible to remove one. I have also tried changing the order of the Oracle home directories in the PATH variable. Currently I have the 64bit one first which is the one I would like to connect with.

I am connecting my application to the Database using ODP.NET and have referenced the dll from the 64bit application.

As far as I can tell I have done what has been suggested and have not managed to get it working. If anyone could help it would be appreciated.

The ORA-12577 error is related to Windows Environment or Oracle Home PATH because sqlplus command works smoothly when I execute it inside ORACLE_HOME\\bin . Its because of two or more oracle installs (say database and companion) in separate ORACLE_HOMEs on that machine unset the ORACLE_HOME value in your window For Details please follow the following steps and hope so you will get the solution. http://www.dba-oracle.com/t_ora_12577.htm

The base problem is that there are DLLs missing in the Oracle instant client installation that exist in the RDBMS server installation that the application requires. This is why switching Oracle homes from client_1 to db_1 works, rather than it being a purely a PATH problem.

sqlplus works in either situation because it uses the minimal set of DLLs which exist in both Oracle installations.

Here are a few things to check. Dont forget to try #3 if needed, it fix the problem for me!

  1. Make sure all Oracle services are started
  2. Make sure environment variables are set (PATH, ORACLE_SID=ORALOCAL, TNS_ADMIN=C:\\Dev\\Oracle\\product\\11.2.0\\dbhome\\NETWORK\\ADMIN)
  3. Try shifting the Path environment variable values like so: “D:\\Dev\\Oracle\\product\\11.2.0\\dbhome\\bin” to be before the “D:\\dev\\Oracle\\product\\11.2.0\\client_32\\bin” in the order

Fissh

For me I am using IIS .net provider. I was able to fix the problem with sqlplus by putting oracle64 before oracle32 in the path. This did not fix problems with .net. I have apps that use oracle32 and oracle64. To solve this problem registry keys HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\ORACLE must point to \\oracle32 home and HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE must point to the \\oracle(64) home.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM