Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: *** FREE HANDLES MESSAGES ***
Vic Millan wrote in message <376fc1c8.12888267_at_news.alterdial.uu.net>...
>I have Oracle 7.3 running on NT. My clients are running WIN95, 64 meg
>ram running software on VB4. Once in a while, the client pc get out of
>free handle messages. And for them to do what they need to do, we have
>to reboot the pc and then everything is fine.
>From what I hear is that the free handle error has something to do
>with the database connections. Is there some kind of settings that I
>should be looking into in the Oracle database server?
Vic, Vic, Vic... You are running VB4 on Win95, get errors and then actually believe it when someone says it has to do with database connections and there's a setting in Oracle, running on a completely different machine, to tune!!??
Don't tell me - you have been talking to Microsoft VB Support.
Here's a huge rant coming. Skip to the end of the message to read the relevant technical details about your problem. If you do read the rant, please do not take it personally - it's not meant that way.
<LEAD PIPE>
#include <std/disclaimers.h>
64MB of RAM means -nothing- on Win95. IT IS A 16BIT OPERATING SYSTEM. Well, not really. But then it's not a 32bit o/s either, but some kind of abortion of the two that should have been euthanised a long time ago. Simple example. In order for Win95 to glue everything together, it needs to create a 16bit stub in conventional memory for all 32bit applications. Having 128MB of memory will not make any difference if these stubs can only reside in 640KB memory, much of it in use already. Look at the GDI (Graphics Device Interface) - to "speed things up", Microsoft left portions of it as 16bit code. 16bit means you have memory segments, each about 64KB. A single memory object can not span a segment as a 16bit pointer can only point to a -single- 16bit address. Can anyone say, Hello DOS? The moral of this story is that THE AMOUNT OF MEMORY ON WIN95 IS MEANINGLESS IN THESE SITUATIONS - there are memory limitations (to use a kind word) in Win95. And it does not matter if you have 8MB of RAM or 128 MB of RAM when you run into these limitations. You are screwed. Courtesy of folks at Redmond and the Big Giant Ass, Bill Gates.
VB4.. What is there to say about this piece of crap that pretends to be a programming language and a development environment. And you are either using ODBC or OLE to access Oracle. Theses "technologies" were suppose to have been leaked to the Russians during the Cold War in order to set their software technology and development back several years. But those details are for alt.conspiracies...
VB is not robust, flexible or mature enough to be used for corporate development. For heaven sakes, it is BASIC - Beginner's All-purpose Symbolic Instruction Code. This is the language which sole purpose was to teach non-programmers the basics of programming (and it did such a poor job at that, that Pascal and C/Java are used instead). And now this "language" is being used to develop corporate mission critical systems. And you guys are worried about the Y2K problem!!! <shudder> And to top it all, this used with ODBC/OLE to access Oracle!! Damn it man, your either totally insane or have cajones the size of soccer balls.
I almost feel better now.. but then I'm still pissed at Bob Metcalfe for his idiotic statements about Open Source and Linux. Another one that was assimilated by the Big Giant Ass and turned into an asshole. Damn, will this never end. We have already lost so many good people <giant raking sobs> </LEAD PIPE>
OK, as promised, the technical details. ODBC (which is what you are using I assume) uses handles. The first time an app calls ODBC, ODBC gives it a "conversation handle" to use for further communication. When you run for example a SQL query, ODBC creates a "SQL Query handle" and gives that to the app to use for retrieving rows from the query result set. Each new connection to a database gets its own "database conversation/connection handle".
If you are brave enough to trace ODBC calls, you will notice a lot of Weirdness (tm) in how handles are allocated, used, not used and deallocated. Especially that not used bit - I've run some traces with VB and ODBC where ODBC creates handles, never used them and deallocate them at a later stage. OK, that is the bit about handles.
Now for the error you getting. Not enough free handles seems to me that ODBC can not create more handles. This can either be a memory problem (please refer to the rant as to why 64MB or even 128MB will not make a difference), or that ODBC has for some weird reason imposes limit on the amount of handles that can be created.
How to solve the problem? Well, knowing VB programmers and the quality (barf) code they produce, my guess/knee-jerk is that multiple DB connections to the -same- database are created (you only need a single connection) and that SQL data sets (DynaSets and SnapShots in VB) are not released after use (which means those ODBC handles are not released either).
What more can I say..? Oh I know! DELPHI RULES AND VB DROOLS!
I have to go now. The guys with the white coats are here to give me my medication.
regards,
Billy
Received on Wed Jun 23 1999 - 02:00:18 CDT
![]() |
![]() |