2

在我们的测试平台中,许多测试套件将连续运行(无人值守),生成报告供以后使用。我想在这些报告中包含有待进一步调查的查询,以及证明它们包含在该列表中的数据。我们应该能够将任何以这种方式识别的查询与将其暴露为关注点的测试套件相关联。

当我们使用 SQL Server 时,这相对简单——调用 DBCC FREEPROCCACHE 在套件开始之前清除所有计数器,然后在测试结束时我们对 sys.dm_exec_query_stats 运行查询,这使我们可以访问执行计数和最小值每个缓存查询计划的 /max/total time(s),带有可用于检索参数化 SQL 语句(我们在 mssql 实例中使用 FORCED 参数化)和查询计划的挂钩。

参考:http: //msdn.microsoft.com/en-us/library/ms189741%28SQL.90%29.aspx

我的问题:当我的目标应用程序已连接到 Oracle 11g 时,如何实现此近似值?到目前为止,我的阅读表明我所追求的一切都可以通过 AWR 获得,并且应该可以直接访问支持视图,但我无法自己关闭这个圈子。

4

4 回答 4

1

为什么需要直接访问支持视图?在我看来,最简单的解决方案是

  • 每个测试套件都通过显式生成 AWR 快照来开始和结束,因此它知道开始和结束快照 ID,因此您可以为每个套件单独生成 AWR 报告。
  • 您为每个测试套件运行 AWR 报告
  • 您查看 AWR 报告,特别关注各个 Top SQL 部分

直接从底层视图中获取所有信息是绝对可能的,但如果您不需要这样做,那显然更容易。

出于理智,我应该指出,我假设您已获得使用 AWR 的许可。从技术上讲,即使查询 AWR 视图也需要您获得 Performance and Tuning Pack 的许可。如果您想直接访问视图而不是因为许可问题而生成完整的 AWR 报告,那么您不会通过访问视图来为自己省去任何许可问题。

于 2009-09-25T03:42:23.413 回答
0

DBCC FREEPROCCACHE 的 Oracle 等效项是

SQL> alter system flush shared_pool;
于 2009-09-25T06:13:58.423 回答
0

最接近 SQL Server 计数器的是V$SYSSTATV$SYSTEM_EVENT。然而,Oracle 实际上也在会话级别在 v$SESSION_WAIT、V$SESSION_WAIT_CLASS 和 V$SESSION_EVENT 中跟踪这些,因此您无需在系统级别重置它们。而且您不需要诊断/调整包许可证即可访问它们。

它们不会下降到 SQL 级别。这在 V$SQL 中可用,但不是特定于该会话。您可以使用会话级别跟踪来跟踪可能导致问题的单个 SQL

于 2009-09-26T08:59:13.910 回答
0

贾斯汀的回答有正确的大纲,但我需要更多关于实施的细节。

  • 每个测试套件都通过显式生成 AWR 快照来开始和结束,因此它知道开始和结束快照 ID,因此您可以为每个套件单独生成 AWR 报告。
  • 您为每个测试套件运行 AWR 报告
  • 您查看 AWR 报告,特别关注各个 Top SQL 部分
  • 我通过调用 dbms_workload_repository.create_snapshot 显式生成快照,结果被保存以备后用。

    从 dual 中选择 dbms_workload_repository.create_snapshot() 作为 snap_id

  • 为了获得报告,我需要数据库 ID 和实例号。这些很容易从 v$database 和 v$instance 获得。

    从 v$database d, v$instance i 中选择 d.DBID, i.instance_number 作为 inst_num

  • 该报告以文本 (dbms_workload_repository.awr_report_text) 或 html (dbms_workload_repository.awr_report_html) 的形式提供。两种情况下的参数都是相同的,包括一个选项标志,该标志将包含来自自动诊断数据库监视器 (ADDM) 的信息。对我来说,我可以利用 ADDM 结果并不是很明显,所以我把它关掉了。返回值是一列 varchar,因此函数调用被包装

    从表中选择输出(dbms_workload_repository.awr_report_html(1043611354,1,5539,5544,0))

  • 这个结果很容易写入一个文件,该文件与测试的其他工件组合在一起。

这些方法的文档可在线获取

于 2009-10-15T16:55:38.447 回答