本教程将介绍如何使用 SQL Performance Analyzer 主动调整 SQL。
大约 30 分钟
本教程介绍了以下主题:
| 概述 | ||
| 前提条件 | ||
| 设置环境 | ||
| 执行导向工作流 | ||
| 运行 SQL Tuning Advisor | ||
| 比较重播试验和调整的 SQL | ||
| 清理 | ||
| 总结 | ||
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
SQL Performance Analyzer 可用于预测和防止由于数据库环境改变影响了 SQL 执行计划的结构而引起的潜在性能问题。这些改变包括(但不限于):
DBA 即使在最复杂的环境中也可以使用 SQL Performance Analyzer,预测由于上述更改引起的 SQL 性能变化(执行计划、统计信息)。由于应用程序在开发生命周期中不断演变,因此数据库应用程序开发人员可以测试模式、数据库对象、重写应用程序等的更改,以减少潜在的性能影响。
利用 SQL Performance Analyzer 还可以比较 SQL 性能统计信息。
在本教程中,您将创建一个任务来比较应用补丁之前和之后的 SQL 负载的性能。任何由于补丁应用程序引起的 SQL 衰退都可以使用 SQL Tuning Advisor 来调整,这将确保系统上的 SQL 负载得到真正改善。
开始学习本教程之前,您应该先完成以下步骤:
| 1. | 安装 Oracle 数据库 11g。 |
|
| 2. | 将 spa.zip 下载并解压缩到您的工作目录中。 |
|
首先,您需要设置 SQL Performance Analyzer 将使用的环境。执行以下步骤:
| 1. | 打开一个终端窗口,从 SQL 文件所在的目录执行以下命令。setup_demo.sh 脚本将创建相应的数据库对象并加载将在本教程中使用的数据。运行此脚本可能需要几分钟。 cd /home/oracle/spa/sql_replay_100q ./setup_demo.sh
|
| 2. | 现在,您可以运行 run_workload_50q.sh 脚本,针对您刚刚加载的数据生成一些负载。执行以下脚本: ./run_workload_50q.sh 2 注:'2' 指明脚本中将执行的查询次数。运行此脚本可能需要几分钟。
|
| 3. | 您还需要运行 create_sts.sql 脚本,为您刚运行的负载创建一个 SQL 调整工具集。执行下列命令: cd other_scripts sqlplus apps/apps @create_sts
|
导向工作流创建一个 SQL Performance Analyzer 任务,并使用手动创建的重播试验执行一些自定义试验。在本示例中,您刚刚安装了一个新的补丁集并且希望看到是否有衰退的 SQL。执行以下步骤:
| 1. | 打开一个浏览器,输入以下 URL: http://<hostname>:1158/em 输入 system 作为用户名,指定口令为 oracle,然后单击 Login。
|
| 2. | 单击 Software and Support 选项卡。
|
| 3. |
选择 Real Application Testing 下方的 SQL Performance Analyzer。
|
| 4. | 选择 SQL Performance Analyzer Workflows 下方的 Guided Workflow。
|
| 5. |
您要执行的第一项任务是基于 SQL 调整工具集创建一个 SQL Performance Analyzer 任务。单击该任务的 Execute 图标。
|
| 6. | 输入 OBE1 作为名称,然后单击 SQL 调整工具集的手电筒图标。
|
| 7. |
选择 HR_WORKLOAD SQL 调整工具集,然后单击 Select。
|
| 8. |
单击 Create 创建 SQL Performance Analyzer 任务。
|
| 9. | 现在,您可以为最初的环境创建 SQL 调整工具集的重播,这将创建一个您更改后与其进行比较的基准。单击导向工作流中第二个步骤的 Execute 图标。当您重播 STS 时,STS 中的 SQL 根据环境一次测试执行一个,不需要重新运行应用程序。
|
| 10. | 输入 OBE_BEFORE_CHANGE 作为名称,单击 Trial environment established 复选框,然后单击 Submit。
|
| 11. |
作业运行。单击 Refresh 几次,直至作业完成。作业运行可能需要一两分钟。
|
| 12. | 当显示绿色对号时,您的作业已完成。
|
| 13. | 现在,您需要进行更改。这是在我们的情景中您将应用补丁集的地方。切换到终端窗口,执行 make_changes.sh 脚本: cd .. ./make_changes.sh
|
| 14. | 现在,您可以通过应用的补丁集重播 SQL 调整工具集以便执行比较。单击导向工作流中第三个步骤的 Execute 图标。
|
| 15. | 输入 OBE_AFTER_CHANGE 作为名称,单击 Trial environment established 复选框,然后单击 Submit。
|
| 16. | 作业运行。单击 Refresh 几次,直至作业完成。现在,您可以比较两个重播作业了。单击导向工作流中第四个步骤的 Execute 图标。
|
17. |
确保 Trial Name 1 设置为 OBE_BEFORE_CHANGE,Trial Name 2 设置为 OBE_AFTER_CHANGE。为 Comparison Metric 接受默认的 Buffer Gets,单击 Submit。
|
18. |
当第四个任务完成时,单击第五个步骤的 Execute 图标,查看比较报告。
|
19. |
通过应用补丁集,大多数 SQL 都有改进,但是您会体验到轻微的衰退。单击 Regression 的条形图。
|
20. |
有四个 SQL 语句需要进一步检查。单击路径式导航栏,返回前一个窗口。
|
21. |
现在,您可以运行 SQL Tuning Advisor 来调整 SQL,查看您是否可以解决发现的衰退。
|
您可以为任何在导向工作流中衰退的 SQL 运行 SQL Tuning Advisor。执行以下步骤:
| 1. | 从 SQL Performance Analyzer Task Result 页面,单击 Schedule SQL Tuning Advisor。
|
| 2. | 输入 OBE_TUNE_REGRESSED_SQL 作为 Tuning Task Name,单击 OK。
|
| 3. | 您的调整任务已成功创建。单击 Advisor Central 路径式导航栏。
|
| 4. | 单击 Refresh 直至作业完成。这可能需要几分钟的时间。作业完成后,单击 OBE_TUNE_REGRESSED_SQL 链接。
|
| 5. | 您将看到为每个 SQL 语句都推荐了一个 SQL Profile。单击 Implement All Profiles。
|
| 6. | 要确认实施,单击 Yes。
|
| 7. | SQL Profile 创建完毕。单击 Advisor Central 路径式导航栏。
|
现在,您可以比较重播试验和调整的 SQL,查看是否有任何衰退。执行以下步骤:
| 1. | 选择 SQL Performance Analyzer 链接。
|
| 2. | 选择 SQL Performance Analyzer Tasks 下方的 OBE1 链接。
|
| 3. | 单击 Replay Trials 下方的 Create Replay Trial。
|
| 4. | 输入 OBE_AFTER_TUNE_REGRESSED_SQL 作为名称,单击 Trial environment established 复选框,然后单击 Submit。
|
| 5. | SQL 重播作业已成功创建。单击 Refresh 直至作业完成。现在,您可以运行 OBE_BEFORE_CHANGE 重播和 OBE_AFTER_TUNE_REGRESSED_SQL 重播之间的比较报告。单击 Run Replay Trial Comparison。
|
| 6. | 为 Trial Name 1 选择 OBE_BEFORE_CHANGE,为 Trial Name 2 选择 OBE_AFTER_TUNE_REGRESSED_SQL。为 Comparison Metric 选择 Buffer Gets,单击 Submit。
|
| 7. | 比较创建完毕。单击您刚刚创建的 Comparison Report 的眼镜图标。
|
| 8. | 注意,此时没有任何衰退情况。因此,使用调整的 SQL 可以安全地应用补丁集,因为这会产生 87% 的性能改善。
|
执行以下步骤清理您的环境:
| 1. | 切换回终端窗口,执行 reset_demo.sh 脚本。 ./reset_demo.sh |
| 2. | 执行以下命令刷新 shared_pool 和缓冲区缓存 sqlplus / as sysdba alter system flush shared_pool; alter system flush buffer_cache; |
| 3. | 此时,您可以再次执行此 OBE 教程。但是,这一次,您不需要执行“设置环境”主题中的第一个步骤。当您运行负载时,您可以从第二个步骤开始。 |
在本教程中,您学习了如何:
| 执行导向工作流 | ||
| 使用最初的环境重播 SQL 调整工具集 | ||
| 应用补丁,然后使用更改后的环境重播 SQL 调整工具集 | ||
| 比较重播以查看所有衰退 | ||
| 运行 SQL Tuning advisor,调整引起衰退的 SQL | ||
| 比较重播试验和调整的 SQL,显示已不存在任何衰退 | ||
将鼠标移到该图标上可以隐藏所有屏幕截图