Oracle Runtime Client 11.2.0.1
Windows Server 2012 64-bit.
Was helping with getting an app working with IIS and had a real bear of a time getting past ora-12154. Connection worked everywhere on the server in question except when run from some URL under IE. Suddenly it started working and we couldn't explain why it hadn't worked prior. I wanted to set up a sqlnet trace to get a handle on what was going on under the covers - exactly where sqlnet was getting hold of the request and where he was looking for names resolution. Got the tracing set up in sqlnet.ora, proved out with a simple sqlplus connection, but nothing we did with the app would generate a trace.
Casting about for something, I found How to enable SQL*Net Client Side Tracing - All About SSIS - Site Home - MSDN Blogs (which caught my attention because it was specifically looking at things from the MS side. And in there I found this statement:
NOTE: If the application you are tracing is running from inside a web
server environment, such as Microsoft’s Internet Information
Server (IIS), you will need to RESTART THE WEB SERVER at this
point in order for these changes to be seen by the web server.
This is due to the fact that web servers may cache the SQLNET.ORA
file.
Now, my view has always been that "sqlnet" (the various executables/dlls) get called by a client process, but it is strictly up to those sqlnet executables to read and act on sqlnet.ora and tnsnames.ora. Why would a client program be caching anything like that? Would the chosen provider ("Oracle" vs "Oracle OLE DB") have anything to do with this?