This article was previously published under Q183345
This article has been archived. It is offered "as is" and will no longer be updated.
The following error message may appear when an Active Server Page (ASP) isexecuting the OPEN method to an Oracle data source:
Microsoft OLEDB Provider for ODBC Drivers error '80004005' [Microsoft][ ODBC driver for Oracle ][Oracle ]ORA-00000: normal, successful completion
You may also receive an additional error message:
[Microsoft][ ODBC driver for Oracle ][Oracle ]ORA-06403 Unable to Allocate memory
The problem arises due to a combination of situations occurring at thesame time. First, Oracle uses a System Global Area (SGA) to share databetween connections. Secondly, when Windows NT authentication is requestedby the Active Server Pages (.asp) page, different users cannot access thesame memory in the System Global Area due to the Windows NT securitymodel. Internet Information Server (IIS) 4.0, NT LanMan security,Microsoft Oracle Driver 2.73.7283.03, connection pooling, and .asp use thefollowing data scenario.
USER 1 requests to connect to Oracle. They have their own user ID forWindows NT security. Connection Pooling is turned on. USER 1 thendisconnects from Oracle. The .asp no longer needs the connection, butbecause Connection Pooling is turned on, the Database Environment Handle(HDBC) remains in memory for 120 seconds. This also keeps the memoryallocated in the SGA on Oracle to USER 1.
USER 2 requests to connect to Oracle. They use the same connection stringto Oracle, but they have a different Windows NT User ID. The ODBC managersees that they are using the same connection string so it reuses theprevious connection from USER 1. Oracle now tries to use the same memorythat was allocated to USER 1, but Windows NT security intervenes becauseUSER 2 (different Windows NT ID) is attempting to use memory designated byUSER 1. Now, the errors mentioned in the SYMPTOMS section occur.
Here are the three workarounds to this problem:
Obtain the new Microsoft Oracle ODBC Driver version 2.5 (Build 2.573.2927).
Turn off connection pooling.
Connection pooling for Oracle can be disabled by setting the CPTimeout value to 0 for the Microsoft ODBC for Oracle driver. CPTimeout is found in the registry in:
HKLM\Software\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle
Remove authentication in Internet Information Server (IIS).
You can resolve this issue by using the new Microsoft Oracle ODBC driverversion 2.5. This driver is available in Visual Studio 6.0, the DataAccess Software Development Kit (SDK) 2.0, and Microsoft Data AccessComponents (MDAC) 2.0. The Data Access Software Development Kit (SDK) 2.0and Microsoft Data Access Components (MDAC) can be download from thefollowing Web address: