Forum Stats

  • 3,852,361 Users
  • 2,264,096 Discussions
  • 7,905,046 Comments

Discussions

Provider cannot be found. It may not be properly installed.

dpcodi
dpcodi Member Posts: 15
edited May 25, 2015 6:29AM in Oracle Provider for OLE DB

We are migrating our ASP.Net 4.0 Web Application to 12c and Windows Server 2012 64 bit platform. Part of the application is running Classic ASP and utilizing COM+ application that require us to run under the IIS Application Pool in 32 bit mode.

We have done a side by side install of the 32 bit and 64 bit 12c client on the Server and now the Classic ASP application cannot find OraOLEDB.Oracle and the application pool is running under a 32 bit in IIS.

We are receiving and error ADODB.Connection error '800a0e7a' Provider cannot be found. It may not be properly installed.


The connection string ="Provider=OraOLEDB.Oracle;Data Source=PIIDB;USER ID=userid;PASSWORD=password" The environment path has the 64 bit home directory first as the install was done after the 32 bit client.

Any help would be greatly appreciated.

Answers

  • Alex Keh-Oracle
    Alex Keh-Oracle Posts: 3,129 Employee
    edited Feb 23, 2015 11:47PM

    One of the features (or limitations) of COM is that you cannot have two COM components of the same name active at the same time. Since Oracle OLE DB is a COM component, it adheres to this principle.

    To accomplish the goal you have in mind, you will have to alternate which Oracle OLE DB instance is the "active" version as described here.

    User_LRZCD
  • Raviraja-Oracle
    Raviraja-Oracle Member Posts: 21 Silver Trophy
    edited Feb 24, 2015 2:27AM

    Hi,

    As of 10.1, OraOLEDB can now be installed into multiple Oracle homes simultaneously, but only a single version can be active at any given time due to the nature of COM objects in the registry. 

    To use a different version, the Oracle OLEDB provider dll (oraoledbXX.dll) must be re-registered via REGSVR32.exe,

    which renders the previous version inoperable.

    This is done automatically when switching homes via the OUI.

    Also OraOLEDB requires that the home it is installed to be first in the PATH environment variable as it loads OCI.dll based on the PATH, which may result in the wrong client libraries getting picked up.

    1)Open command prompt with "Run As Administrator" privileges.

    In the command window execute the following command to register the Oracle Provider for OLE DB:

    For 64-bit Oracle Client on 64-bit OS :

    ======================================

        set the PATH environment variable to <Oracle64BitHome>\bin

        regsvr32 <Oracle64BitHome>\bin\OraOLEDB11.dll

    For 32-bit Oracle Client on 64-bit OS

    ======================================

    set the PATH environment variable to <Oracle32BitHome>\bin

    C:\Windows\SysWOW64\regsvr32 <Oracle32BitHome>\bin\OraOLEDB11.dll

    Where <OracleXXBitHome> is the physical path to the Oracle home where the driver is installed.

    Regards,

    Ravi

    User_LRZCD
  • dpcodi
    dpcodi Member Posts: 15
    edited Feb 24, 2015 1:44PM

    I have tried your suggestion rebooted server after change but have had no success.

    We are using the 12 C client ODP.Net the 64 bit installation was last.

    32 bit: C:\oracle\product\12.1.0\client_1\bin

    64 bit: C:\oracle\product\12.1.0\client_2\bin

    Path: C:\oracle\product\12.1.0\client_1\bin;C:\oracle\product\12.1.0\odac_1\bin;C:\oracle\product\12.1.0\odac_1;C:\oracle\product\12.1.0\odac_2;C:\oracle\product\12.1.0\odac_2\bin;C:\oracle\product\12.1.0\client_2\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

    C:\Windows\SysWOW64\regsvr32 C:\oracle\product\12.1.0\client_1\bin\OraOLEDB12.dll.

    Still receiving message "Provider cannot be found. It may not be properly installed"

  • Raviraja-Oracle
    Raviraja-Oracle Member Posts: 21 Silver Trophy
    edited Mar 1, 2015 10:08PM

    Hi,

    Are you sure that you are running the 32-bit application after registering the 32-bit dll ?

    Check the process using task manager. If the process name contains *32 then you are running 32 bit processes on a 64 bit Windows.

    Regards,

    Ravi

  • 2955920
    2955920 Member Posts: 1
    edited May 25, 2015 6:29AM

    Thanks for your reply.

        I saw the processes and they all are 32 bit process and my system is 64 bit.

    Please see the screenshot I have attached with this.

    Please let me know what should I do now?

This discussion has been closed.