asp.net+oracle9.0,使用close关闭连接,但只要编译几次就出现连接满,求救我的连接串是这样的:Ast="data source=;user id=wufeng;password=wufeng;min pool size=5;max pool size=20";这样也不行:Ast="data source=;user id=wufeng;password=wufeng;";我们这边oracle限制连接数,也就是说我只能用50左右连接数,经常我编译几次,连接就满,必须重新启动数据库。asp就没有该问题不得解求救!

解决方案 »

  1.   

    看是否存在DataReader使用后没有关闭的情况存在
      

  2.   

    如樓上的都不行的話可試以下方法:1: oracle 的連接數搞大點...2: max pool size=20 也少了點吧...3: 编译時要每個都去掃描的。一般也就是DataReader沒關。。    你的window是不是 server版的? 商用版的IIS有10個連接數限制.
        server版的可設很多....
      

  3.   

    你手动结束asp.net进程看看
      

  4.   

    1。连接全部关闭了。这点是肯定的。
    2."你的window是不是 server版的? 商用版的IIS有10個連接數限制.
        server版的可設很多...."
    不是客户连接满,而是把数据库顶死了。
    3。我总觉得是asp.net的问题,用asp就没有该问题。
      

  5.   

    using(OracleConnection  conn = new  OracleConnection(ConnectionString))
    {
      dosomething...
       conn.close()
    }
      

  6.   

    这个和
    OracleConnection  conn = new  OracleConnection(ConnectionString))
    conn.close()有什么不一样
      

  7.   

    using(OracleConnection  conn = new  OracleConnection(ConnectionString))
    {
      dosomething...
       conn.close()
    }
    只要conn离开的using范围就是关闭和释放,异常抛出也生效
    如果不这样你必须显式地关闭和释放对象,
    还有就是你程序异常时是否也会执行关闭和释放对象的代码.
      

  8.   

    我是这样关闭的,而且没有异常!OracleConnection  conn = new  OracleConnection(ConnectionString))
    conn.close()现在不知道问题出在那里,晕,
      

  9.   

    conn为引用类型 你新建实例即在堆上分配内存
    虽然conn.close关闭了conn,但只是改变了它的状态,并未释放资源
      

  10.   

    要调用IDisposed接口,用GC回收
      

  11.   

    conn.close()现在不知道问题出在那里,晕,不一定关了连接,你要看看有没有datareader,这个一定要关掉。
    我以前也碰到过,就是没有关datareader,关掉conn.close()没有用。
    还有,你如果可以监视进程,你看看那些sql占用了,没有释放。
      

  12.   

    1."每次连接数据库之前编码释放一次数据集."是oracle里面的连接一直没有断2。“要调用IDisposed接口,用GC回收”怎么实现?
      

  13.   

    3。“不一定关了连接,你要看看有没有datareader,这个一定要关掉。
    我以前也碰到过,就是没有关datareader,关掉conn.close()没有用。
    还有,你如果可以监视进程,你看看那些sql占用了,没有释放。”我是这样设置,难道还不行?
    OracleDataReader dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      

  14.   

    显式实现IDisposable:
    public class YourClass:IDisposable
    {
    protected virtual void Dispose(bool disposing)
    {
    if (! disposing)
    return;  if (Connection != null)
    Connection.Dispose();
    }
    }
    }
      

  15.   


    要是馬上就回收此連接, 那是不是就清空了連接池? 不就會影響效率? //不是客户连接满,而是把数据库顶死了。樓主再查查是不是oracle存儲過程有死鎖? 
      

  16.   

    连接全部关闭了。这点是肯定的。楼主,我也一直在思考一个问题,就是如何确定我到底有没有忘记关conn,看你答的这么肯定,所以想请教看看你是怎么肯定这点的?从哪里看出连接全关了?
    try
    {conn.open();
    conn.close();
    }
    catch{}这样的语句如果有的话,连接就极可能没关闭!当然还有其他情况,不要想当然!
      

  17.   

    using(OracleConnection  conn = new  OracleConnection(ConnectionString))
    {
      dosomething...
       conn.close()
    }
      try
    {conn.open();
    conn.close();
    }
    catch{}
      

  18.   

    1."樓主再查查是不是oracle存儲過程有死鎖? "
    没有存储过程
    2。to syeerzy(快乐永远) 
    我程序是这样关闭的:
    conn.open();try
    {
    conn.close();
    }
    catch
    {
    conn.close();
    }
      

  19.   

    我搜索下csdn的帖子,很多朋友发了类似的帖子。一直没有解决,郁闷中