ODP.NET requires you to clean up things. So you:
have to dispose OracleParameter instances, as they contain unmanaged resources (!) and Odp.net doesn't do this
have to dispose OracleCommand objects, as they too contain unmanaged resources and closing a connection doesn't close these
open cursors can't live without an open connection, though in odp.net nothing gets cleaned up after a connection closes (or gets disposed), so you have to clean up these too (and before the connection closes of course).
I.o.w.: clean up what you create.
It can be the OracleDataAdapter already does this for you, but that's unclear (and the odp.net docs don't say this, so you've to check the (unreadable) code with reflector to make sure. Though rule of thumb with odp.net: to avoid memory leaks, always call dispose, on everything in the order: parameter, cursor, command, transaction, connection.