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)清除连接池中的此连接。

  • 相关阅读:
    构建之法阅读笔记01
    最长英语单词链
    第十五周学习总结
    寻找“水王”
    Happy Necklace HDU
    Bi-shoe and Phi-shoe LightOJ
    The Embarrassed Cryptographer POJ
    Big Number HDU
    矩阵乘法模板C/C++
    Baby Step,Giant Step算法模板
  • 原文地址:https://www.cnblogs.com/morvenhuang/p/1562992.html
Copyright © 2011-2022 走看看