Re: Handle count leak when connecting to Oracle via ODBC on Windows

From: Kong Li <>
Date: 9 Feb 2004 11:50:06 -0800
Message-ID: <>

Follow up to this thread,
Instead of Microsoft ODBC for Oracle, I also used Oracle ODBC driver (version while keeping everything else the same. There is also handle count leak. 2 per
AllocHandle/connect/disconnect/FreeHandle, identical to the behavior of using Microsoft ODBC for Oracle.

To be more specific, after a successful SQLDriverConnect, the handle count increases quiet a few. After the SQLFreeHandle(SQL_HANDLE_DBC, hdbc), the handle count drops back but is still 2 more than the handle count value before SQLDriverConnect.

I used the same code to connect to SQL 2000 with MSSQL ODBC driver (version 2000.81.9042.00). There is no handle count leak. This leads me to believe the code itself is correct.

The Oracle server is 9i (9.2.0).

Here is the skelton code:

SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); while (true) {
  construct connection string for a new Oracle server   SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);   if (SQL_SUCCEEDED(SQLDriverConnect(hdbc,...))) {     SQLDisconnect(hdbc);
  SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

Any ideas or pointers?


Kong (Billy Verreynne) wrote in message news:<>...
> (Kong Li) wrote
> > I have a simple program calling SQLDriverConnect (not OLEDB, not ADO,
> > but ODBC) to an Oracle server 9.2, and then disconnect. The value of
> > handle count increases by 2 each time I did the connect/disconnect.
> > This has been verified on the above 3 environments. Turning on/off
> > ODBC connection pooling does not change the handle count leakage.
> If it works the same way on different versions, maybe then it works as
> designed. I would think that a handle counter cannot really "leak" in
> the same way as allocated handles leak memory when not properly
> freed...
> > Is this a known problem? I did not try Oracle's own ODBC driver.
> Is this the right forum to ask ODBC related questions? IMO not.
> > Any pointers, ideas?
> Try the question in a ODBC/Microsoft forum. Use a MSAccess or
> SQL-Server driver to determine if this is related to Oracle ODBC
> driver only. Read the ODBC API specification to determine exactly how
> the handle count works. Connect your app to the ODBC driver via an
> ODBC debugger (there used to be a great one in the ODBC DDK that
> shipped with DevNet in the 90's).
Received on Mon Feb 09 2004 - 20:50:06 CET

Original text of this message