是否可以确定10g大型数据库安装的并发连接平均值?
任何想法??
答案 0 :(得分:1)
这可能更像是一个ServerFault问题。
在基本级别上,您可以通过定期查询v $ session来计算当前会话的数量,将该数字存储在某个位置,然后对其进行平均。
但是已经有很好的实用程序可以帮助解决这个问题。看看STATSPACK。然后查看显示here的脚本以帮助您入门。
或者,您可以安装商业监控应用程序,例如Spotlight on Oracle。
答案 1 :(得分:0)
如果您设置了Oracle Enterprise Manager,则可以创建一个用户定义的度量标准,用于记录SELECT COUNT(*)FROM V $ SESSION。选择相关链接 - >用户定义的度量标准,用于设置新的用户定义度量标准。收集一些数据后,您可以以原始形式获取数据,或者为您做一些基本的图表。作为奖励,如果您希望在指标达到特定值时通过电子邮件发送,您还可以设置警报。
答案 2 :(得分:0)
棘手的一点是记录连接。默认情况下,Oracle不会这样做,所以如果你没有任何东西,那么你将没有历史记录。
开始记录连接的最简单方法是使用Oracle内置的审计功能。它就像
一样简单audit session
/
我们可以在名为dba_audit_session
的视图中查看每个连接的记录。
现在怎样?以下查询使用公用表表达式生成一系列日期时间值,这些值将跨越2009年7月8日的五分钟块。 CTE的输出连接到该日期的审计视图;计算每个连接的计数,该计数跨越五分钟的增量。
with t as
( select to_date('08-JUL-2009') + ((level-1) * (300/86400)) as five_mins
from dual connect by level <= 288)
select to_char(t.five_mins, 'HH24:MI') as five_mins
, sum(case when t.five_mins between timestamp and logoff_time
then 1
else 0 end) as connections
from t
, dba_audit_session ssn
where trunc(ssn.timestamp) = to_date('08-JUL-2009')
group by to_char(t.five_mins, 'HH24:MI')
order by t.five_mins
/
然后,您可以将此查询用作计算平均连接数的查询的输入。
这是一个相当粗略的实现:我从显示考虑中选择五分钟增量,但显然增量越细,测量越准确。请注意:如果你使增量太细,并且你有很多连接,那么结果交叉连接将需要很长时间才能运行!