Sql 在Oracle 11g中自动识别问题查询

Sql 在Oracle 11g中自动识别问题查询,sql,oracle,plsql,oracle11g,Sql,Oracle,Plsql,Oracle11g,在我们的测试平台中,许多测试套件将连续运行(无人值守),生成报告供以后使用。我想在这些报告中包括那些有待进一步调查的问题,以及证明它们有理由列入该清单的数据。我们应该能够将以这种方式识别的任何查询与将其作为关注点公开的测试套件相关联 当我们使用SQL Server时,这是相对直接的-在套件开始之前调用DBCC FREEPROCCACHE会清除所有计数器,然后在测试结束时,我们对sys.dm_exec_query_stats运行查询,这使我们能够访问每个缓存查询计划的执行计数和最小/最大/总时间,

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

当我们使用SQL Server时,这是相对直接的-在套件开始之前调用DBCC FREEPROCCACHE会清除所有计数器,然后在测试结束时,我们对sys.dm_exec_query_stats运行查询,这使我们能够访问每个缓存查询计划的执行计数和最小/最大/总时间,使用可用的钩子检索参数化SQL语句(我们在mssql实例中使用强制参数化)和查询计划

参考:


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

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

  • 每个测试套件通过显式生成AWR快照开始和结束,这样它就知道开始和结束快照ID,并且您可以为每个套件单独生成AWR报告
  • 您可以为每个测试套件运行AWR报告
  • 您可以查看AWR报告,特别是查看各种顶级SQL部分
直接从底层视图获取所有信息是完全可能的,但如果不需要这样做,显然会更容易


为了理智起见,我应该指出,我假设您已获得使用AWR的许可。从技术上讲,即使查询AWR视图,也需要您获得性能和调优包的许可。如果由于许可问题,您希望直接点击视图,而不是生成完整的AWR报告,那么点击视图并不会为您节省任何许可问题。

Oracle的DBCC FREEPROCCACHE等价物是

SQL> alter system flush shared_pool;

最接近SQL Server计数器的是和。 然而,Oracle实际上也在会话级别在v$session_WAIT、v$session_WAIT_类和v$session_EVENT中跟踪它们,因此您不需要在系统级别重置它们。 而且您不需要诊断/调优包许可证就可以访问它们


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

Justin的回答有正确的大纲,但我需要关于实现的更多细节

  • 每个测试套件通过显式生成AWR快照开始和结束,这样它就知道开始和结束快照ID,并且您可以为每个套件单独生成AWR报告
  • 您可以为每个测试套件运行AWR报告
  • 您可以查看AWR报告,特别是查看各种顶级SQL部分
  • 我通过调用dbms\u workload\u repository.create\u snapshot显式生成快照,结果会保存下来供以后使用

    选择dbms_workload_repository.create_snapshot()作为双数据库中的快照id

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

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

  • 该报告以文本(dbms\u workload\u repository.awr\u report\u text)或html(dbms\u workload\u repository.awr\u report\u html)的形式提供。两种情况下的参数相同,包括一个选项标志,该标志将包含来自自动诊断数据库监视器(ADDM)的信息。我并没有立即意识到我可以利用ADDM结果,所以我关闭了它。返回值是varchar的一列,因此函数调用被包装

    从表中选择输出(dbms_workload_repository.awr_report_html(1043611354,155395544,0))

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


+1 AWR报告可能会使用安装中的标准脚本生成(文本或html),并且可以很好地按各种资源类别对SQL进行排序。它不会重置计数器(例如V$SYSSTAT和V$SYSTEM\U事件)