使用 SQL Tuning Advisor 主动调整数据库

本教程介绍了如何使用企业管理器和自动负载信息库主动调整数据库。Tuning Advisor 使用的许多分析工具已经公开,从而使数据库管理员还能够执行被动型调节。

大约 45 分钟

本教程包括下列主题:

使用 SQL Tuning Advisor 调整 SQL 语句
查看 SQL 语句的 SQL 执行细节

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

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

企业管理器的新 SQL 调节和诊断特性是什么?

自动负载信息库收集、处理和维护性能统计信息,以便检测和自行调节问题。自动数据库诊断监视程序 (ADDM) 减少了诊断和调整 Oracle 系统所需的工作量。SQL Tuning Advisor 特性提供了一种快速、高效的技术来优化 SQL 语句。

在完成对数据的诊断监视后,可以在 Oracle 企业管理器屏幕中查看性能诊断信息。遇到性能问题后,可以启动 Oracle 顾问程序以进一步确定和纠正问题。例如,ADDM 可以标识高峰负载 SQL 语句,然后可以使用 SQL Tuning Advisor 调整这些语句。

主动型与被动型数据库调整

使用 Oracle 数据库 10g 新的集成和自动调节特性,可以使用企业管理器检测所发生的问题,并设计用于调节问题的解决方案。作为数据库管理员,您只需实施建议。这称为主动型调整。

还可以使用相同工具执行您自己的数据库性能分析。可以在最适合您业务的方法中创建 SQL 调整任务来解决问题。这称为被动型调整。

开始学习本教程之前,您应已经:

1.

完成了教程:使用真正应用集群 (RAC) 和自动存储管理 (ASM) 在 Windows 上安装 Oracle 数据库 10g

或者

完成了教程 在 Linux 上安装 Oracle 数据库 10g

返回主题列表

首先启动几个负载会话。 然后,查看数据库负载。执行以下步骤:

1.

打开一个命令行窗口,将目录更改为 wrkdir,然后运行以下 OS 脚本:

cd /home/oracle/wkdir

./setup_perflab.sh

注意: 该脚本在实验过程中继续运行。

2.

打开一个浏览器,并输入以下 URL:

http://:5500/em

输入 sys 作为用户名,指定口令,以 SYSDBA 身份连接,然后单击 Login

将鼠标移到该图标上可以查看该图像

3.

向下滚动至主页底部,然后单击 O10G_O10G1 Instance 链接。

将鼠标移到该图标上可以查看该图像

4.

选择 Administration 链接。

将鼠标移到该图标上可以查看该图像

5.

在标题为 Workload 的部分中,单击 Automatic Workload Repository 链接。

将鼠标移到该图标上可以查看该图像

6.

确定已经为该数据库采集了多少快照。查看 Snapshots 下的数量和最后一次 ADDM 快照采集的时间。至少应该有三个快照。 单击 Cluster Database Instance 定位器链接。

将鼠标移到该图标上可以查看该图像

7.

单击 Performance 链接。

将鼠标移到该图标上可以查看该图像

8.

在 Performance 窗口中查看 Sessions: Waiting and Working 图。显示一个表示数据库当前负载的图表。 (用数据填充该图可能需要一分钟的时间。) 该图由 ADDM 快照收集的数据填充。图表的边上是图例。每个图例项具有不同的颜色。您应能够从图中快速看出占用时间最多的项是黄色的,即用户 I/O。单击 User I/O 链接。

将鼠标移到该图标上可以查看该图像

9.

在 Active Sessions Waiting:User I/O 图表下有两个饼图。 查看左侧的饼图 Top Waiting SQL该饼图显示了大多数等待 (53 %) 是由一个 SQL 语句引起的。 查看右侧的饼图 Top Waiting Sessions这个饼图显示当前最活跃的几个会话等待的时间几乎占相同的百分比。

将鼠标移到该图标上可以查看该图像

如上一个任务中所示,有一个导致大多数数据库等待的 SQL 语句。在这个任务中,您将探究根本原因。执行以下步骤:

1.

从 Active Sessions Waiting:User I/O 页面中,单击该页面中间的 Top SQL 选项卡。

将鼠标移到该图标上可以查看该图像

2.

在出现的详情页面上,查看 Wait Events for Top SQL 表,该表按活动(%) 排序。 您可以看到 Top SQL 语句将其大部分时间花费在了“db file scattered read”或“read by other session”活动上。单击具有最高活动百分比的 SQL 语句的 SQL ID。

将鼠标移到该图标上可以查看该图像

3.

显示这条 SQL 语句的执行计划。单击 Current Statistics 选项卡。

将鼠标移到该图标上可以查看该图像

4.

显示这条 SQL 语句的统计数据。单击 Execution History 选项卡。

将鼠标移到该图标上可以查看该图像

5.

显示这条 SQL 语句的统计分析图表。CPU 和 Elapsed Time 图表显示在一段时间上执行这条 SQL 语句的 CPU 使用率。选择 Seconds Per Execution,单击 Go,显示这条 SQL 语句的每次执行使用的时间和资源。

将鼠标移到该图标上可以查看该图像

6.

从显示的图表中,可以确定 CPU 资源使用率在增加,执行这条 SQL 语句花费的时间也在增加。单击 Tuning History 选项卡。

将鼠标移到该图标上可以查看该图像

7.

显示之前为这条 SQL 语句提供的调整建议。当前没有建议。您现在就可以使用 SQL Tuning Advisor 调整 SQL 语句了。

将鼠标移到该图标上可以查看该图像

正如在上一个关于被动型调整的部分中确定的那样,目标 SQL 语句需要调整。SQL Tuning Advisor 将为您调整执行计划。执行以下步骤:

1.

单击 Run SQL Tuning Advisor

将鼠标移到该图标上可以查看该图像

2.

在 Schedule Advisor 窗口中,确保选择了 Scope 下的 Comprehensive,则将立即安排该作业。单击 OK

将鼠标移到该图标上可以查看该图像

3.

SQL Tuning Advisor 创建一个分析 SQL 语句的任务。 完成此任务后,它将显示一组调整建议。

将鼠标移到该图标上可以查看该图像

4.

单击 New Explain Plan 按钮,查看建议的修改。

将鼠标移到该图标上可以查看该图像

5.

正如您所看到的,新的解释计划删除了全部的表扫描。 单击 SQL Tuning Results 链接。

将鼠标移到该图标上可以查看该图像

6.

单击 View Recommendations

将鼠标移到该图标上可以查看该图像

7.

单击 Implement 按钮,执行调整建议。

将鼠标移到该图标上可以查看该图像

8.

出现一条确认页面,指示 SQL Profile 成功创建。 单击 Cluster Database Instance 定位器链接。

将鼠标移到该图标上可以查看该图像

您已执行了调整建议,现在查看 SQL 语句和其执行细节。执行以下步骤:

1.

单击 Cluster Database Instance 链接。

将鼠标移到该图标上可以查看该图像

2.

单击 Performance 选项卡。

将鼠标移到该图标上可以查看该图像

3.

向下滚动至 Sessions:Waiting and Working 图表。等待一分钟,观察用户 I/O 如何减少。

将鼠标移到该图标上可以查看该图像

在本教程中,您学习了如何执行下列任务:

检查 Database Wait 类 的 Database Waits 和 Top SQL
利用 SQL Tuning Advisor 调整 SQL 语句
查看 SQL 语句的 SQL 执行细节

返回主题列表

返回主题列表

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