SQL Performance Analyzer SPA常用脚本汇总

本文汇总了SQL Performance Analyzer(SPA)的使用,包括其在Oracle 11g中的作用,如何预测和防止数据库更改带来的性能问题。通过收集SQL、传送工作量、计算性能、实施更改、分析差异等步骤,DBA和开发人员可以预测和优化SQL工作量的性能。此外,提到了SPA在处理DML语句时的选项和潜在的BUG。

SPA常用脚本汇总

附件为 一个SPA报告 spa_buffergets_summary

 

SQL 性能分析器 SQL Performance Analyzer SPA

Oracle Database 11g 引入了 SQL 性能分析器;使用该工具可以准确地评估更改对组成工作量的 SQL 语句的影响。SQL 性能分析器可帮助预测潜在的更改对 SQL 查询工作量的性能影响。这种功能可向 DBA 提供有关 SQL 语句性能的详细信息,例如,执行前后的统计信息,提高或降低性能的语句。这样一来,您就可以执行诸如以下操作的操作:在测试环境中进行更改,以确定数据库升级是否会改进工作量性能。

 

  1. 11g 的新增功能
  2. 目标用户:DBA、QA、应用程序开发人员
  3. 帮助预测系统更改对 SQL 工作量响应时间的影响
  4. 建立不同版本的 SQL 工作量性能(即 SQL 执行计划和执行统计信息)
  5. 以串行方式执行 SQL(不考虑并发性)
  6. 分析性能差异
  7. 提供对单个 SQL 的细粒度性能分析
  8. 与 SQL 优化指导集成在一起以优化回归

SQL 性能分析器:使用情形 
SQL 性能分析器可用于预测和防止会影响 SQL 执行计划结构的任何数据库环境更改所带来的潜在性能问题。这些更改可以包括(但不限于)以下任何一种更改:

  1. 数据库升级
  2. 实施优化建议
  3. 更改方案
  4. 收集统计信息
  5. 更改数据库参数
  6. 更改操作系统和硬件

 

DBA 甚至可以使用 SQL 性能分析器为最复杂的环境预测先期更改导致的 SQL 性能更改。例如,随着应用程序在开发周期中的变化,数据库应用程序开发人员可以测试对方案、 数据库对象和重写应用程序的更改,以减轻任何潜在的性能影响。
使用 SQL 性能分析器还可以比较 SQL 性能统计信息。

SQL 性能分析器:概要

1.  收集 SQL:在这个阶段中,将收集用于表示生产系统中的 SQL 工作量的 SQL 语句集。可以使用 SQL 优化集或自动工作量资料档案库 (AWR) 来捕获要传送的信息。因为 AWR 本质上是捕获高负载的 SQL,所以应考虑修改默认的 AWR 快照设置和捕获的顶级 SQL,以确保 AWR 捕获最大数量的 SQL 语句。这可以确保捕获更加完整的 SQL 工作量。

2.  传送:在这个阶段中,应将得到的工作量结果传送到测试系统。从生产系统导出 STS,然后将 STS 导入到测试系统。

3.  计算“之前版本”性能:在进行任何更改之前,执行 SQL 语句,收集评估将来的更改对工作量性能的可能影响所需的基线信息。在此阶段收集的信息给出了系统工作量当前状态的一个快照。性能数据包括:

-执行计划(如由解释计划生成的计划)
-执行统计信息(如由占用时间、缓冲获取次数、磁盘读取次数和已处理的行数组成的信息)

4. 进行更改:获得了之前版本数据后,可以实施计划的更改,然后开始查看对性能的影响。

5.  计算“之后版本”性能:在数据库环境中进行了更改之后才执行此步骤。SQL 工作量的每个语句都在虚拟执行(仅收集统计信息)模式下运行,收集与步骤 3 所捕获的信息相同的信息。

6.  比较和分析 SQL 性能:在获得了两个版本的 SQL 工作量性能数据后,可以通过比较之后版本与之前版本的数据来进行性能分析。比较的根据是执行统计信息,如所用时间、CPU 时间和缓冲区获取次数等。

7.  优化回归的 SQL:在此阶段中,已经准确地确认了哪些 SQL 语句在进行数据库更改时可能导致性能问题。在此阶段中可以使用任何一种数据库工具来优化系统。例如,可以对确认的语句使用 SQL 优化指导或访问指导,然后实施相应的建议。也可以使用在步骤 3 中捕获的计划植入 SQL 计划管理 (SPM) 以确保计划保持不变。在实施了任何优化操作后,应重复该过程来创建新的之后版本,然后分析性能差异以确保新的性能是可接受的。
默认情况下SPA若涉及到DML语句则只有查询部分Query会被执行,但是貌似是从11.2开始可以执行完全的DML了,需要加入参数EXECUTE_FULLDML,但是该参数目前有一些BUG:

Bug 10428438 : WITH EXECUTE_FULLDML ROWS IS ALWAYS SET TO 0 11.2.0.1

Oracle SQL Performance AnalyzerSPA)是一种用于评估SQL语句在不同环境变更前后性能表现的工具,主要用于数据库升级、配置调整或系统迁移等场景下的性能对比分析。除了SPA,Oracle和其他厂商也提供了一些功能相似的工具,可用于SQL性能分析和调优。 ### 3.1 SQL Trace SQL Trace是Oracle提供的基础性能诊断工具,能够捕获SQL语句的执行细节,包括执行时间、等待事件、逻辑读取等资源消耗信息。通过生成的跟踪文件结合`tkprof`工具进行格式化处理,可以清晰地看到每条SQL的执行路径和性能瓶颈。该工具适用于单条SQL的深入分析,但不支持批量SQL任务的自动化比较[^2]。 ```bash # 示例:启用SQL Trace并使用tkprof格式化输出 ALTER SESSION SET SQL_TRACE = TRUE; -- 执行SQL操作 ALTER SESSION SET SQL_TRACE = FALSE; # 使用 tkprof 工具格式化原始 trace 文件 tkprof orcl_ora_12345.trc output.txt ``` ### 3.2 Automatic Workload Repository (AWR) AWR 是 Oracle 自带的性能监控与分析组件,定期采集数据库性能统计信息并存储为快照。通过 AWR 报告,可以查看特定时间段内的 SQL 执行情况、系统资源使用状况以及潜在性能问题。虽然 AWR 不直接支持 SQL 执行计划的前后对比,但可结合 `DBMS_WORKLOAD_REPLAY` 和 SPA 实现更全面的性能分析[^1]。 ### 3.3 SQL Tuning Advisor (STA) SQL Tuning Advisor 是 Oracle 提供的自动调优工具,能够针对单条或多条 SQL 语句进行分析,并提出优化建议,如创建索引、改写查询等。它通常与 SQL Performance Analyzer 配合使用,先由 SPA 检测出性能退化的 SQL,再通过 STA 提供建议进行修复。该工具不支持版本升级前后的性能对比,但在日常维护中非常实用[^3]。 ### 3.4 Real Application Testing (RAT) Real Application Testing 包含两个核心组件:Database Replay 和 SQL Performance Analyzer。其中 Database Replay 可以捕获生产系统的实际负载并在测试环境中重放,模拟真实业务压力;而 SQL Performance Analyzer 则专注于 SQL 层面的性能对比。RAT 是一个完整的性能验证平台,适合大规模系统迁移或架构改造时使用[^1]。 ### 3.5 第三方工具 除了 Oracle 自带的工具外,还有一些第三方产品也具备类似 SQL Performance Analyzer 的功能: - **Quest SQL Optimizer**:提供 SQL 改写建议、执行计划可视化分析等功能,支持多版本数据库间的性能比较。 - **Toad for Oracle**:集成 SQL 分析模块,可对执行计划、资源消耗等进行对比,适合开发人员和 DBA 日常使用。 - **Embarcadero DB PowerStudio**:涵盖多个数据库平台,提供 SQL 性能监控、调优建议和历史趋势分析。 这些工具通常具有图形界面,操作便捷,部分支持跨平台比较和自动化分析流程,适合不具备深厚 PL/SQL 编程能力的用户使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值