【问题标题】:oracle requests countersoracle 请求计数器
【发布时间】:2011-04-04 23:15:52
【问题描述】:

我正在使用 IIS 计数器来监控 IIS 的“业务”。特别喜欢其中的两个:

  1. Current Anonymous Users(当前有匿名请求等待 WWW 服务的用户数。在 IIS 6.0 中,Current Users(Anonymous 或 NonAnonymous)是服务器当前正在处理的请求数)
  2. Total Anonymous User(自 WWW 服务启动后建立匿名请求的用户数。当从内核缓存提供文件时,此计数器不会增加。)

因为我的瓶颈是数据库,恰好是 Oracle 10g,我想知道是否可以从 Oracle 服务器(在数据库级别)获取类似的计数器。

基本上,我想知道在我提出请求时有多少对数据库 ABC 的请求正在等待处理,以及自(上次重置、当天开始...)以来处理了多少请求。

我怎样才能得到Oracle服务器的这些数据?

【问题讨论】:

    标签: sql oracle performancecounter


    【解决方案1】:

    V$SESSION 可用于确定在当前时刻有多少数据库会话处于活动状态。此查询将显示当前时刻处于活动状态的用户会话数(而不是 Oracle 数据库本身创建的后台会话数)。您可能希望进一步将其限制为活动会话的数量,其中USERNAME 是您的中间层正在连接的用户,或者创建会话的MACHINE 是您的中间层服务器之一。

    SELECT COUNT(*)
      FROM v$session
     WHERE status = 'ACTIVE'
       AND type = 'USER'
    

    对于 Web 浏览器的“服务请求数”,Oracle 没有简单的映射。从数据库的角度来看,“请求”何时开始和结束没有任何标记。您可能会计算事务,但 Oracle 数据库本身会不断在后台发出事务,如果您想要一个与所服务网页数量密切相关的度量,这可能会导致问题。

    不过,使用计数器来诊断和监控 Oracle 数据库性能并不是一个特别好的主意。 Oracle 提供了更为复杂的监控和调优工具。根据版本(标准版或企业版)以及您是否获得了 Performance and Tuning Pack 的许可,您最好从数据库成为瓶颈的时间段获取AWR report 并对其进行分析以查看需要什么待调整。

    【讨论】:

    • 我对 V$SESSION 很不满意,但是根据我的测试,由用户名组成的活动会话数让我对数据库性能不太清楚......最后我想要一些数值表示请求时的工作量
    • @bensiu - 什么不清楚?我发布的查询将告诉您当前正在执行多少个会话。我同意这可能不是一个特别有用的指标,可用于衡量 Oracle 数据库的使用率,但它几乎完美地模拟了您的第一个请求。如果您确实需要一个数字,我更喜欢使用 AWR 报告中的 Total DB Time/Elapsed Time 行。但是将性能归结为一个数字是一个非常有损的过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多