This is the mother of all problems, and I admit that I am stumped. It will be a miracle if I can explain this problem and my findings correctly.

I'm in the process of upgrading from Oracle 8i to 9i. I have a production 8i system that works. I'm also working on a network client installation of Oracle 9i. This is ultimately my goal. I do not want to have to install the client software on hundreds of PCs. Currently, 8i is installed locally on all client PCs. I now have Oracle 9i Client installed on a network drive called O:. I installed this software from the server itself. Then, I exported the Oracle part of the registry, which will be used to make a master registry file that will be imported for each client PC.

On a test client PC, I have imported the Oracle registry items. All the entries point to the O:. I have added O:\oracle9\bin to the PATH on the client PC.

I can do a successful TNSPING to my database. And I can run SQLPLUS and run commands. There is a connection. That part is fine.

I have a Visual Basic application (which I did not write) that is an interface into my database. When I attempt to run the VB app from the test client PC, I get the following error:

Run-time error '3706'
Provider cannot be found. It may not be properly installed.

Here is the Visual Basic connect string from the code:

Connect_Str = "Provider=OraOLEDB.Oracle;Data Source=xxxx;" & _
"User ID=xxxxx;Password=xxxxx;FEN=T;FRC=5;FDL=5;"

I have checked various Oracle documents and followed the suggestions, i.e. verify that oci.dll is in the path (it is), verify that "Authenticated Users" has Read & Execute privileges on the network O: Oracle folder (it does).

I then tried to install the Oracle Client locally on the PC. That works, of course. Then, I will take the registry and path variables and map them over to my O: instead of C:. It still works, no error. Then, I uninstall Oracle from C:, and the error returns. So I thought that maybe Oracle was installing files into c:\winnt\system or c:\winnt\system32 that were needed. These files would be missing on the Network O: client installation. So I monitored the folders, and I did find a few files that Oracle adds, so I copied them to the test client PC. But the error remained.

Now, it gets even more strange. I copied the o:\oracle9\bin folder to c:\oracle9\bin. At this point, there is no Oracle installation on C:, just the c:\oracle9\bin folder. The error then goes away and the app connects. If I remove the c:\oracle9\bin folder, the error comes back. All along the registry variables and path are pointing to O:. There is NO reference to C: in the environment PATH or the registry!! Then, perhaps the strangest thing occurs. With the c:\oracle9\bin folder present, I remove the o:\oracle9\bin PATH value, and I get a different error about a missing DLL file, then the 3706 error again.

So what I don't understand is that somehow the O: files are being used, but somehow the files just are not quite good enough so the C: files are also needed. The c:\oracle9\bin and o:\oracle9\bin files are exactly the same.

If anyone is still reading and has an clue as to what is causing my problem, I'd very much like to hear about it.