If you're certain that your application is not intending to have that many cursors open in the database, then increasing the OPEN_CURSORS setting is really only masking the problem. If your application is not closing the cursors, setting the value to 250 or some other larger number will reduce the chances that the exceeded open cursors error will be seen by the user, but they will see it again at some point. Not to mention the additional server resources being dedicated to all of these extraneous open cursors.

As Jeff said, the problem is that people who are opening cursors are not closing them. If your VB code is calling the Recordset.Open method, then you need to close the recordset's cursor. If you are going to reuse the Recordset object itself at some future point, then just call Recordset.Close. If you're done with the recordset entirely, then set the recordset object = Nothing to release all references to it.

If you are getting a recordset by calling a stored procedure with a REF CURSOR output parameter, it's still the responsibility of your application to close the recordset.

If your application has processing that may require there to be a large number of open recordsets, then increasing the OPEN_CURSORS parameter is fine.

HTH,

Heath