【问题描述】:
创建一线程时就链接数据库了,之后线程一直闲置中,过了一天后链接会话还在吗?数据库会不会把这个会话关闭?
这个相当于长连接的问题,一天后连接还在,因为数据库不会把这个会话关闭。下面简单介绍下数据库的长连接和短连接。
- 短连接操作步骤:连接-数据传输-关闭连接。
- 长连接操作步骤:连接-数据传输-保持连接-数据传输-保持连接-…………-关闭连接。
这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了。
什么时候用长连接,短连接?
长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生 Socket 出错,并且频繁创建 Socket 连接也是对资源的浪费。一般情况下应用和数据库直接的连接都是通过连接池实现,也就是采用长连接的方式。而一般连接到服务器查询某个数据时,这种情况采用的是短连接。
DM 数据库可以通过 v$sessions 视图查看会话连接情况。比如查询连接超过 7 天的会话,可以通过下面的 SQL 实现:
select from v$sessions where create_time < sysdate -7; |

如果要删掉超过 7 天的会话,可以通过下面的 SQL 先找过超过 7 天的会话,然后把里面的内容拿出来执行:
select 'sp_close_session('||sess_id||');' from v$sessions where create_time < sysdate -7; |

假如结果是:sp_close_session(910688560):直接在 manager 中执行即可删除该条连接。

执行结果,910688560 这个会话被关闭。

因为测试机刚启动的没有超过 7 天的会话,执行的时候没加后面的 where 条件。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




