2.15 General .NET Programming Recommendations and Tips for ODP.NET

  • Thread.Abort() should not be used, as unmanaged resources may remain unreleased, which can potentially cause memory leaks and hangs.

  • To optimize resource usage, ODP.NET objects, such as OracleConnection and OracleCommand, should be explicitly closed or disposed, or both, when they are no longer needed. This should be done rather than relying on the .NET Framework garbage collector to reclaim resources. Many users have found that under stress conditions, explicit Close or Dispose calls result in much lower resource usage.

  • It is recommended not to proceed with application execution if the application encounters exceptions that are associated with possible memory corruption, such as System.AccessViolationException and System.Runtime.InteropServices.SEHException.

  • If the HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG registry entry is set to NA, ODP.NET encounters ORA-12705 errors. To eliminate this problem, remove the HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG registry entry.