oracle锁表语句执行提示无法终止当前对话_显示Oracle数据库表或行上持有锁的所有会话...

Report Content

Issue: *

Copyright Infringment

Spam

Invalid Contents

Broken Links

Your Name:

*

Your Email:

*

Details:

*

Submit Report

今天一位客户说应用运行比较慢,让我看看数据库中锁的相关情况。

那么如何快速的找到持有锁的会话相关信息呢?

请参考如下SQL:

SET term ON;

SET LINES 130;

COLUMN sid_ser format a12 heading 'session,|serial#';

COLUMN username format a12 heading 'os user/|db user'; COLUMN process format a9 heading 'os|process';

COLUMN spid format a7 heading 'trace|number';

COLUMN owner_object format a35 heading 'owner.object'; COLUMN locked_mode format a13 heading 'locked|mode'; COLUMN STATUS format a8 heading 'status';

spool coe_locks.lst;

SELECT

substr(to_char(l.session_id)||','||to_char(s.serial#),1,12) sid_ser, substr(l.os_user_name||'/'||l.oracle_username,1,12) username, l.process,

p.spid,

substr(o.owner||'.'||o.object_name,1,35) owner_object, decode(l.locked_mode,

1,'No Lock',

2,'Row Share',

3,'Row Exclusive',

4,'Share',

5,'Share Row Excl', 6,'Exclusive',NULL) locked_mode,

substr(s.STATUS,1,8) STATUS FROM

v$locked_object l, all_objects o, v$session s, v$process p

WHERE

l.object_id = o.object_id

AND l.session_id = s.sid AND s.paddr = p.addr AND s.STATUS != 'KILLED';

spool off;

在结果中PROCESS字段的1234代表的意思,请看如下解释:

JDBC Thin驱动程序本身无法正确检索某些 V$SESSION 属性的值。 具体来说,驱动程序表现出以下行为:

1.当使用JDBC Thin驱动程序查询 V$SESSION 表的TERMINAL字段时,返回的值为“未知”。

2.使用JDBC Thin驱动程序查询 V$SESSION 表的PROCESS字段时,返回的值为“1234”。 由于无法使用JDBC Thin驱动程序获取进程ID,因此驱动程序默认将进程ID返回为“1234”。

处于inactive 状态的会话表示语句已经执行完成。inactive对数据库本身没有什么影响,但如果程序没有及时commit,那么长时间持有相关的锁不释放,就会带来相应的阻塞问题。

当客户端发出应用程序连接请求时,将与数据库服务器建立JDBC连接。 JDBC连接池旨在具有到数据库的开放JDBC连接的服务器场所,可以由应用程序借用。从性能角度来看,这是更有效的,因为它每次都节省打开和关闭JDBC连接的时间。但是,这意味着当系统中的活动很少时,连接可以长时间闲置。大多数连接将大部分时间都花在连接池中,等待Java线程打开它们,或者等待Java线程对数据进行处理,或者等待网络在计算机之间传输数据。这意味着在任何给定时间点,将有相当数量的数据库连接,其中V $ SESSION中的STATUS为“ INACTIVE”。那是完全正常的。

但是,重要的是要验证打开的连接数没有稳定增加,这表明连接泄漏会阻止这些连接被重用并导致达到最大连接数。

引用:

Understanding Inactive or Stale Sessions From JDBC Connection Pool (Doc ID 1641167.1)

https://docs.oracle.com/cd/B28359_01/java.111/e10788/optimize.htm#CFHHCICE

https://docs.oracle.com/cd/B28359_01/java.111/e10788/connect.htm#CHDIDJGH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值