oracle查询未释放连接的sql

最近发现程序不知在什么地方没有关闭连接,导致超出数据库连接最大数,连接不上数据库了,我像查下是那条sql语句没有正常关闭连接造成的,怎么查询,请大侠多多帮忙!

用如下语句查询未释放连接的sql。

select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id = o.object_id and l.session_id=s.sid;

如图,就是查看未释放连接的语句的sid等内容。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-26
A(港口表)港口代码 港口名B(船抵达港口表)船名 抵港港口代码 预抵港口代码暂且设这两个名和这些个字段吧select a.船名,b.港口名 抵港港口名,c.港口名 预抵港口名 from 船抵达港口表 a,港口表 b,港口表 c wherea.抵港港口代码=b.港口代码 and a.预抵港口代码=c.港口代码就是把第1个表拿出来用两次,分别和那个表关联
第2个回答  2012-06-26
比较复杂,得查程序代码,如果连接是程序中open 的必须 程序close 否则就不会自动关闭连接,如果是sqladapter 自动打开的不需要close ,逐行查代码吧,没有什么好办法。
第3个回答  2012-06-26
select logon_time,last_call_et,username,status,t2.SQL_TEXT from V$session t1 left join v$sql t2 on t1.PREV_SQL_ID=t2.SQL_ID where username='此处为数据库连接用户'  order by username,logon_time,last_call_et追问

好像不行啊,就第一次登录的记录显示了,然后我在一个小程序中故意没有关闭连接,但是没显示出来,不知怎么回事?

第4个回答  推荐于2017-12-16
你确定是数据库连接没关闭

你可以用pl/sql查询oracle会话看那个sql的会话最多啊本回答被提问者和网友采纳
相似回答