使用 SQL Performance Analyzer 评估负载变化的影响
使用 SQL Performance Analyzer 评估负载变化的影响
本教程将介绍如何使用 SQL Performance Analyzer 主动调整 SQL。
大约 30 分钟
本教程介绍了以下主题:
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
SQL Performance Analyzer 可用于预测和防止由于数据库环境改变影响了 SQL 执行计划的结构而引起的潜在性能问题。这些改变包括(但不限于):
- 数据库升级
- 执行优化建议
- 模式更改
- 统计信息收集
- 数据库参数更改
- OS/硬件更改
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,显示已不存在任何衰退 |
返回主题列表
将鼠标移到该图标上可以隐藏所有屏幕截图
|