用于获取长时间活动会话的Oracle脚本

时间:2011-12-05 18:07:02

标签: sql oracle monitoring

您是否可以为v$session提供任何脚本?我似乎遇到了一个问题,我的oracle活动会话已经填满了。这是我做的时候

SELECT * FROM V$SESSION WHERE STATUS = 'ACTIVE'

我的问题是,我需要一个可以确定连接持续多长时间以及持有者的脚本?我想知道我在哪里得到它。如果可能的话,如果我可以自动拨打这些会话,那将是非常好的。我想知道自上次命令完成以来他们被关押了多久。另外需要注意的是,没有与我正在看到的SQL会话相关联的当前语句。

2 个答案:

答案 0 :(得分:0)

我不确定我到底知道你在找什么。

“连接保持多长时间”是什么意思呢?对于处于活动状态的会话,LAST_CALL_ET中的V$SESSION列将指示自上次呼叫以来的秒数。 LOGON_TIME中的V$SESSION列将显示最初创建数据库会话的时间。您在寻找不同的指标吗?如果是这样,您能更详细地描述指标吗?

“谁持有它”的意思究竟是什么意思? USERNAME的{​​{1}}列告诉您Oracle用户名,V$SESSION告诉您打开会话的客户端计算机上的操作系统用户。您在寻找不同的指标吗?如果是这样,您能更详细地描述该指标吗?例如,您是否在三层应用程序中查找最终用户的名称?

我不确定“自动拨号”在这种情况下是什么意思。

“自上一次命令完成以来,他们持有多长时间”不同于“连接持续多长时间”?如果是这样,听起来就像是在描述OSUSERLAST_CALL_ET之间的区别。

答案 1 :(得分:0)

我猜你有一个没有正确关闭连接的应用程序,以确定罪魁祸首将原始脚本修改为:

SELECT username,
    program,
    terminal,
    COUNT (*)
FROM v$session
WHERE status = 'ACTIVE'
GROUP BY username,
    program,
    terminal
ORDER BY COUNT (*) DESC

这应该有助于您确定连接的使用位置。