最近整理的都是一些小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)清除连接池中的此连接。

 

相关文章:

  • 2022-03-01
  • 2022-12-23
  • 2021-10-12
  • 2022-01-27
  • 2021-12-02
  • 2022-02-23
  • 2021-06-01
  • 2022-01-01
猜你喜欢
  • 2021-09-28
  • 2021-09-29
  • 2022-02-28
  • 2021-08-24
  • 2021-05-19
  • 2021-11-14
相关资源
相似解决方案