使用 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.
2.

首先,您需要设置 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,显示已不存在任何衰退

返回主题列表

将鼠标移到该图标上可以隐藏所有屏幕截图

寄送此页面
Printer View 打印机视图