Oracle中的非活动会话
我想问一个问题: 这是我的环境:Oracle中的非活动会话,oracle,oracle11g,oracle-sqldeveloper,database-administration,Oracle,Oracle11g,Oracle Sqldeveloper,Database Administration,我想问一个问题: 这是我的环境: Solaris版本10;Sun操作系统版本5.10 Oracle版本:11g Enterprise x64版 运行此查询时: select c.owner, c.object_name, c.object_type,b.sid, b.serial#, b.status, b.osuser, b.machine from v$locked_object a , v$session b, dba_objects c where b.sid = a.se
- Solaris版本10;Sun操作系统版本5.10
- Oracle版本:11g Enterprise x64版
select c.owner, c.object_name, c.object_type,b.sid, b.serial#, b.status, b.osuser, b.machine
from v$locked_object a , v$session b, dba_objects c
where b.sid = a.session_id
and a.object_id = c.object_id;
有时我会得到许多状态为“非活动”
这是什么意思?
这会使我的数据库和应用程序变慢吗?
活动和非活动状态的影响是什么?
active
表示会话当前正在执行一些SQL操作,而inactive
表示相反。查看
本质上,大量的活动
会话会降低整个DBMS(包括应用程序)的速度。到什么程度是很难说的-这里你必须看看IO、CPU等负载
非活动会话的影响很小,除非您超过最大会话数 简单地说,v$session中的
INACTIVE
状态表示在签入v$session时没有执行SQL语句
另一方面,如果您看到大量非活动会话,则首先检查每个会话的上次活动时间
我怀疑的是,它们可能是
连接池的一部分,因此可能会被频繁使用。您不必担心它,因为从应用程序连接的角度来看,连接池会处理它。您可能会在相当长的一段时间内看到这样的非活动的会话。这并不意味着D/B是慢的
Status INACTIVE表示会话现在不执行任何查询。
活动表示它正在执行查询
这是什么意思
就在oracle可执行文件执行read
以获取其会话应执行的下一个“命令”之前,它会将会话状态设置为非活动。读取完成后
将设置为活动
。它将保持该状态,直到完成所请求的工作。然后它会把整个事情重新做一遍
这会使我的数据库和应用程序变慢吗
不一定。查看最后一个问题的答案
活动和非活动状态的影响是什么
大量会话(活动或非活动)的后果有两个方面
第一种情况是,如果这个数字是单调递增的,这将导致人们调查应用程序正在泄漏连接的可能性。我相信这样的灾难不会发生,否则你会特别提到的
第二种情况更可能发生,即数字在公布的上限内波动。根据和的其他知名成员的说法,一些架构师允许应用程序的连接池中存在太多的连接,他们演示了当连接池太高时会发生什么(响应时间和可用性后果)。他们还提供了如何更好地定义连接池的属性和行为的方法
他们论点的实质是,通过允许池中有大量连接,您可以让它们同时都很忙。数据库服务器可能必须在排队等待底层资源(如磁盘、CPU、网络,甚至排队等)时扮演主要角色,而不是让应用层队列事务
即使所有会话只在短时间内忙碌,并且它们正在争夺各种资源,争用也是浪费的,并且可能会一次又一次地重复。花额外的时间设计一个好的用户体验排队模型更为合理,这样您就不会在体系结构中无疑是最昂贵的(硬件和软件许可证)层上浪费资源