2013-04-17 141 views
3

背景:积极跟踪Oracle查询性能

我们这里的观点是呼吁的观点被调用视图的数据库环境...逻辑变得复杂,现在改变为基本的观点可能对显著影响由客户端应用程序调用顶视图。

现在,当我们记录所有的逻辑并确定如何放松一切时,开发仍在继续,性能不断下降。

目前我会手动在客户端查询上运行解释计划,并深入调整它。这是一个缓慢而乏味的过程,可能无法对年龄进行检查。

问题:

我要生成一个报告,列出SQL ID,并列出了实际时间/差异估计行和实际行/缓冲区中/的变化而变化之间的变化相比,计算出的平均读取在过去一个月。

我通常会手动运行以下脚本,并根据当天的响应对其进行检查。

ALTER SESSION SET statistics_level=all; 
set linesize 256; 
set pagesize 0; 
set serveroutput off; 

-- QUERY 

SELECT 
    * 
FROM 
    table (DBMS_XPLAN.display_cursor (NULL, NULL, 'ALLSTATS LAST')); 

我想要做的是看到关于自动解释计划查询和插入统计到表中。从那里我可以运行一个回归报告来检测性能的变化,然后可以提醒开发人员。

我在想这样的事情很普遍,而不必诉诸于OEM。我找不到任何东西,所以我想知道是否有更常见的方法呢?

回答

4

Oracle为Automatic Workload Repositiory提供了此功能。 http://docs.oracle.com/cd/E11882_01/server.112/e16638/autostat.htm

虽然我认为它是企业版之外的额外许可证。它应该可以在没有额外成本的非生产环境中使用,但请咨询您的Oracle销售代表。

+0

IANAL,但如果Oracle允许在非产品环境中未经许可使用AWR,我会感到非常惊讶,因为它们需要这些环境中其他所有设备的许可证。 – APC

+0

在某些情况下,开发许可证可以毫无用处,但坦率地说甲骨文无论如何都有自己的用户社区 - 如果您使用标准版,AWR的实际成本可能为10万英镑+,因为还需要许可EE 。 –

+0

非常好,我会检查我们是否拥有许可证 - 我正在寻找 –

0

活动会话历史(ASH)是你在找什么

select * from v$active_session_history where sql_id = :yoursqlid 
+0

ASH是DIagnostics包的一部分,并且像AWR需要在Enterprise Edition许可证之上另外提供许可证。 – APC

2

这听起来好像你是在路上重新发明STATSPACK。 Oracle仍将其包含在他们的数据库中,但不再记录它,大概是因为它是免费的,与AWR和ASH不同。您仍然可以在the 9i manual中找到文档。

+0

干杯!如果我们没有AWR,这节省了我一大笔时间。看起来包含我想要的所有功能 - 基线模板/ sql散列报告等。更好的方法与基线进行比较而不是移动平均值。 –