利用自动 SQL 调优功能改进 SQL 语句调优

本教程将向您介绍如何利用自动 SQL 调优功能自动调优高负载 SQL 语句从而获益。

大约 20 分钟

主题

本教程包括下列主题:

将光标置于此图标上可以加载和查看本教程的所有屏幕截图。 (警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图将其隐藏。

概述

Oracle Database 11g 进一步自动化 SQL 调优过程:它识别有问题的 SQL 语句,对这些语句运行 SQL Tuning Advisor,然后实施生成的 SQL 配置文件建议对这些语句进行调优,所有这些无需用户参与。

返回主题列表

开始本教程之前,您应该:

1.

安装 Oracle Database 11g。

2.

下载 ast.zip 文件并将其解压缩至您的工作目录,然后转到该工作目录。

返回主题列表

使用自动 SQL 调优功能

自动 SQL 调优功能通过一个名为“Automatic SQL Tuning”的新任务(默认情况下,每天晚上运行)使用 AUTOTASK 框架。下面简要描述一下 Oracle Database 11g 中自动 SQL 调优的过程:

下面的例子通过在您执行了某些高负载 SQL 语句后强制运行 Automatic SQL Tuning 任务来说明上述行为。强制执行 Automatic SQL Tuning 只是因为您不希望等到晚上才运行该任务。要强制其执行,只需在执行本 OBE 时打开维护窗口。

执行以下步骤,了解 Automatic SQL Tuning 的用法:

1.

在 Enterprise Manager Database Control 下,以 SYS 用户身份连接。

2.

进入 Home 页面后,单击 Server 选项卡。在 Server 子页面中,单击 Automated Maintenance Tasks 链接。

3.

在 Automated Maintenance Tasks 页面中,单击 Configure 按钮。在 Automated Tasks Configuration 页面中,单击 Automatic SQL Tuning 行前面的 Configure 按钮。

4.

在 Automatic SQL Tuning Settings 页面中,为 Automatic Implementation of SQL Profiles 选择 Yes。默认情况下,自动 SQL 配置文件实施处于关闭状态,因为它需要调优包许可。完成以上操作后,单击 Apply。然后,单击路径式导航栏中的 Automated Maintenance Tasks Configuration 导航项,然后再单击 Automated Maintenance Tasks 导航项。

5.

打开一个终端窗口,以 oracle 用户身份连接。转至 ast.zip 文件解压缩到的目录。执行 ast_setup.sh 脚本。该脚本创建一个用于本 OBE 的新模式。该脚本还将清除 Automatic SQL Tuning 以前的执行。

./ast_setup.sh

6.

在同一终端窗口中,执行 run_workload_stream.sh 脚本。该脚本将多次执行一个自发呈现出低效率的 SQL 语句。注意完成执行所用的时间。

./run_workload_stream.sh

7.

在同一终端窗口中,执行 run_ast.sh 脚本。该脚本将强制维护窗口打开以触发 Automatic SQL Tuning 任务执行,从而自动调优高负载 SQL 语句。这样做是为了避免等到晚上维护窗口才自动打开。在实际操作中,您不必强制维护窗口打开。

注意:此脚本的执行可能至少需要几分钟。

./run_ast.sh

8.

仍然在该终端窗口中,重新执行 run_workload_stream.sh 脚本。该脚本将多次执行一个自发呈现出低效率的 SQL 语句。注意完成执行所用的时间。与上次执行相比,此次执行的时间会缩短。这是由于 Automatic SQL Tuning 对此特定语句进行了调优,自动实施并使用了一个提供更好计划的配置文件。

./run_workload_stream.sh

9.

在您的终端会话中,使用以下命令在 SQL*Plus 下以 ast 用户身份(口令为 ast)连接,强制创建一个 AWR 快照:

exec dbms_workload_repository.create_snapshot;

完成以上操作后,退出 SQL*Plus 会话。

10.

返回 Enterprise Manager Automated Maintenance Tasks 页面,单击 Automatic SQL Tuning 链接。

11.

这将转至 Automatic SQL Tuning Results Summary 页面,您可以在其中看到在上一个会话期间仅调优了一条 SQL 语句并提供了两点建议:自动实施了一个 SQL 配置文件,还有一个索引创建却只是建议尚未实施。该页面还将报告 Profile Effect Statistics(配置文件效果统计信息)。很明显,建议的配置文件很有帮助。在该页面中,单击 View Report 按钮。

12.

在 Automatic SQL Tuning Result Details 页面中,您可以查看所有被认为进行了自动调优的语句。注意,即使没有启用自动 SQL 配置文件实施,您仍然可以获得有关建议的 SQL 配置文件的信息。在此例中,自动实施了配置文件。选择与 AST 模式对应的 SQL 语句,单击 View Recommendations 按钮。

13.

在 Recommendations for SQL ID 页面上,您可以查看对应的 SQL 语句的完整文本。选择与 SQL 配置文件对应的建议,单击相关的 Compare Explain Plans 图标。您可以查看SQL 配置文件实施前后生成的不同计划。完成后,在浏览器中单击 Back 按钮返回到 Recommendations 页面。

14.

返回 Recommendations For SQL ID 页面,单击与调优后的语句相对应的 SQL 文本。

15.

在 SQL Details 的 Tuning History 子页面中,您可以清楚地看到该语句已由 Automatic SQL Tuning 任务调优。在 Plan Control 子页面中,注意 SQL 配置文件已自动实施。

16.

但是,您仍然可以使用 PL/SQL 检索同一信息。在终端会话中,执行 get_task_report.sh 脚本。该脚本将显示以前使用 PL/SQL 进行分析的结果。

./get_task_report.sh

返回主题列表

在本教程中,您学习了如何使用 SQL Access Advisor。

返回主题列表

将光标置于该图标上可以隐藏所有的屏幕截图。