Maybe you need to do an audit and see if handles are being disconnected after use, or the same SqlConnect() is being called repeatedly with no SqlDisconnect(). If you are using a class to manage Sql handles - check its working properly. A good idea is to have a class that re-compiles old connected Sql Handles for re-use rather than uses a new one. Try and avoid using SqlImmediate(), replace it with SqlConnect() SqlPrepareAndExecute() and then SqlDisconnect()
I can send you a class to manage Sql Handles if you like and try it out - but it may require lots of work to plug into your app., but have never had any probs with Sql cursors, so it must be working Ok. Only ever used it on Oracle7.3, Sqlbase, Informix and SqlServer though. It maybe an Oracle8 thing.