zoukankan      html  css  js  c++  java
  • Tips&Tricks系列六:ADO.NET OracleConnection.ClearPool(conn)

    最近整理的都是一些小Tip,充数也发上来,希望对大家有所帮助。

    前几天在做一个功能时,需要创建一个临时的小数据库Schema,并在程序的最后将此Schema删除,在删除的时候总是提示“ORA-01940: cannot drop a user that is currently connected”,由于程序比较简单,我很确信自己已经关闭了所有连接,甚至Connection对象也都调用了Dispose()。

    后来怀疑是连接池机制造成的问题,查了一下资料:除非在connection string中明确说明,否则总是默认是启用连接池机制的。

    也就是说,当一个连接对象被关闭甚至Dispose(),它并未在物理上被释放,而是统一还给连接池保存,以便后续使用。这样在数据库里通过查询v$session视图,连接还是存在的。删除些用户时自然就会出现ORA-01940错误。

    解决的方法是调用静态方法OracleConnection.ClearPool(conn)清除连接池中的此连接。

  • 相关阅读:
    C++中dynamic_cas操作符的工作原理
    wcf服务契约的重载
    db2学习笔记
    微软新特性下的异常处理
    任务取消TASK
    socket多文件发送(压缩,解压)
    oracle 表分区例子
    Task构造
    TASK 的使用
    Asp.Net 用户验证(自定义IPrincipal和IIdentity)
  • 原文地址:https://www.cnblogs.com/morvenhuang/p/1562992.html
Copyright © 2011-2022 走看看