.Net Oracle process error

hi

This is regarding a performance issue in my windows application... Maximum possible process in my oracle server is 150...

Sometimes my users wont be able to log on to my application since it exceeds maximum processes.. so we have to restart my oracle server....

Can anyone suggest the best practise to avoid this...im using Visual studio 2003 and coding in VB.Net

Thanks




Answer this question

.Net Oracle process error

  • rmillerii

    hi

    i changed my max pool size to 20 and tried to execute....i opened 20 screens.. but my program quits on selecting 21st screen..saying connection is closed.... i think a conection is pooled in every screens(not in every database operations) ... any method to reuse opened conection instead of opening new connections

    Regards



  • Derek Moffett

    hi

    i tried in my current application itself...having more than 30 forms.. but result is same

    i changed my close conection method as below

    Protected Function CloseConnection() As Boolean
    Try
    _conOracle.Close()
    Catch ex As Exception
    Return False
    Finally
    _conOracle.Dispose()
    End Try
    Return True
    End Function

    any problem with the code... i each form load , data is populated...so inactive conections keeps on increasing on loading every forms....any other solution

    Regards



  • Mauricio hevs

    i wil change the exception to oraclexception... i tried to debug closeconection method..no exception in that code... i hav heard abt using key word in C#... will the result b the same if we write the same code in c# with 'using' block

    and..when i call mybase.closeconnection , its closing the same conection we hav used to iterate records ...right but i have read articles saying that using keyword has more performance than the above method.....



  • edotcom

    You are catching all exceptions and returning false (which is typically a bad idea), can you see Close is throwing an exception.

    Can you please try using a small console application Simply open a connection, run a query and close the connection. That way we can it is related to your application.



  • Steven Ramacher

    Are you sure you are disposing the connection Can you try reproducing this using small Console application

  • Aksi-

    Raju,

    I don't have any Oracle knowledge, but at a guess, are you making sure that you are calling Dispose on your database connections when finished with them

    How are you connected to the Oracle server



  • Hiya

    hi

    i called close connection at the end of my all functions that returns dataset/array list etc and analysed the process using Oracle Enterprise Manager... many of the connection opened are shown as inactive...but this stil counts in total processes and when this exceeds 150...by database stops working...

    is there any method to kill connection forcefully using vb.net program

    Regards



  • Hubman

    hi

    now im bit confused..whether to use Pooling or Not .. many articles suggest to use pooling... im creating connection using same conection string.. what should be the minimum pool size

    if min pool size is 1 , why the oracle keeps more than 10 connections in which one is active and rest inactive anyone reported same problem in MS SQL Server 2005

    please view the code used to connect with oracle

    Public Class BaseData
    Private _conOracle As OracleConnection
    Private _strQuery As String

    Public Sub New()
    Me.OpenConnection()
    End Sub

    Protected Function OpenConnection() As Boolean
    Dim strCon As String = "Data Source=csbora;User id=casy;Password=casy;Min Pool Size=1;Max Pool Size=150"
    _conOracle = New OracleConnection(strCon)

    Try
    _conOracle.Open()
    Catch ex As Exception
    Return False
    End Try

    Return True
    End Function

    Protected Function CloseConnection() As Boolean
    Try
    _conOracle.Close()
    Catch ex As Exception
    Return False
    End Try
    Return True
    End Function

    Public ReadOnly Property Connection() As OracleConnection
    Get
    Return _conOracle
    End Get
    End Property

    End Class
    End Namespace



  • FreddieCode

    Min Pool Size controls the minimum number of connections in the pool, whereas Max Pool Size control the maximum number of connections in the pool.

    Can you just lowering the Max Pool Size, to see if this is the issue



  • Drea27

    I don't think forcefully closing connections will be a good solution.

    These open connections could be caused by the pooling of connections. When you call Close() on a connection, the connection gets sent back to a pool where it continues to stay open (for a while). When you next open a connection with the same connection string, instead of the physically creating another connection, it returns the one from the pool.

    This usually works well, however, it you are creating lots of connections with connection strings that are not the same (even a little different), then this could be causing a problem.

    You might want to try disabling connection pooling to see if this is actually causing the problem. However, be aware that is not going to be a solution.

    After I did some searching, it appears that others are the same issue, see the following: http://weblogs.asp.net/ngur/archive/2004/01/21/61207.aspx.



  • Liew Vai Teng


    I would highly recommend that you explicitly close the connection and not rely on dispose or the object going out of scope to release it.

  • Nasty

    You could always add "Pooling=false" to the OracleClient connection string, this will avoid pooling. If your code manages the lifetime of the connection then it makes sense to do this. Pooling will keep the connections around for reuse.

  • NJC

    If you have a wrapper class that encapsulates an OracleClient.OracleConnection connection, then I recommend you implement Dispose in your class and have your Dispose method call OracleConnection.Dispose method. You can also implement CloseConnection. Main reason for this is to improve pooling performance, calling Close or Dispose will put the connection back in the pool immediately.



  • Kripa

    hi

    i used System.data.oracleclient class for connecting to oracle... for this i created a class with protected methods for opening and closing connection.. the class has a public property Connection to return active connection... also openconnection will be called in constructor

    my data access clases are inherited from the above class...and use mybase.Connection object to specify connection...

    do i have to specifically call mybase.CloseConnection or it will be done automatically when i call dispose

    is it necessary to override dispose in the super class by implementing idisposable

    thanks



  • .Net Oracle process error