使用 SQL Access Advisor 推荐物化视图和索引

OBE 主页 > 10gR2 单实例 > 可管理性

使用 SQL Access Advisor 推荐物化视图和索引

本教程介绍了如何使用 SQL Access Advisor 获取物化视图和索引建议以优化性能。

大约 30 分钟

本教程包括下列主题:

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

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

SQL Access Advisor 提供了许多过程,可以调用这些过程来帮助确定要创建和丢弃的物化视图和索引。它利用根据您的模式假定的负载,或实际的负载(可能由用户通过 Oracle Trace 或 SQL 缓存内容提供)作出决策。

还可以根据不同的条件对负载进行过滤,如只使用包含这些表的查询,或在这个范围中有优先权的查询。

返回主题列表

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

1.

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

2.

saa.zip 文件下载到您的工作目录 (c:\wkdir)。

返回主题列表

要准备环境以使用 SQL Access Advisor,执行以下步骤。(当 Advisor 在运行时,物化视图和索引可能存在,但对于此示例,我们将它们删除,以便您可以看到 Advisor 的建议。您还必须设置缓存,以便 SQL Access Advisor 能够生成建议。)

1.

按如下方式调用 SQL*Plus:选择开始 > 程序 > Oracle - OraDb10g_home1 > Application Development > SQL Plus。输入 /nolog 作为用户名,并单击 OK

sysdba 的身份进行连接:

connect / as sysdba

2.

现在您必须创建缓存。执行下列命令:

@c:\wkdir\advisor_cache_setup

advisor_cache_setup.sql 脚本包含以下内容:

alter system flush shared_pool;
grant advisor to sh;
connect sh/sh;
SELECT c.cust_last_name, sum(s.amount_sold) AS dollars,
sum(s.quantity_sold) as quantity
FROM sales s , customers c, products p
WHERE c.cust_id = s.cust_id
AND s.prod_id = p.prod_id
AND c.cust_state_province IN ('Dublin','Galway')
GROUP BY c.cust_last_name;
SELECT c.cust_id, SUM(amount_sold) AS dollar_sales
FROM sales s, customers c WHERE s.cust_id= c.cust_id GROUP BY c.cust_id;
select sum(unit_cost) from costs group by prod_id;

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

返回主题列表

您将使用刚刚设置的 SQL 缓存从 SQL Access Advisor 获取一些建议。执行以下步骤:

1.

打开浏览器,通过输入以下 URL 调用企业管理器数据库控制:

http://:1158/em

SYSDBA 的身份输入 sys/oracle,然后单击 Login

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

2.

滚动至主页底部,并单击 Related Links 部分中的 Advisor Central

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

3.

单击 SQL Access Advisor 链接。

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

4.

选择 Use Default Options 并单击 Continue

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

5.

确保选中 Current and Recent SQL Activity,然后单击 Filter Options

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

6.

向下滚动。在 Filter Options 下,选择 Filter Workload Based on these Options。在 Users 部分中,选择 Include only SQL statements executed by these users,然后在 Users 域中输入 SH。向上滚动至页面顶部。

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

7.

单击 Next

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

8.

在 Recommendation Types 部分中选择 Both Indexes and Materialized Views,然后单击 Next

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

9.

在 Advisor Task Information 下输入任务名 OBE<任何名称>。确保在 Scheduling Options 部分中为 Schedule Type 选择了 Standard。单击 Next

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

10.

单击 Submit

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

返回主题列表

现在您可以查看结果,并可以在需要的情况下执行建议。执行以下步骤:

1.

确保在 Results 部分中选择了作业 OBE<任何名称>,然后单击 View Result
注意:如果未看到创建的 SQL Access Advisor Task,请单击 Refresh。如果您收到消息“No recommendations were generated because the workload was empty(没有任何建议生成,因为该工作区为空)”,则可能需要重新开始本教程。根据您使用的计算机内存大小,可能会有一个计时问题。

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

2.

要查看建议摘要,单击 Show Recommendation Action Counts

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

3.

要查看建议类型,单击 Show Statement Counts

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

4.

要查看负载中的语句类型,单击 Recommendations

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

5.

在 ID 列中单击 1,查看建议细节。

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

6.

在此页面上,您可以自定义 Object Name、Schema 和 Tablespace 来实施建议。向下滚动,并将 Create Materialized View 的 Schema Name 更改为 SH,然后单击 OK

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

7.

要查看在安排实施时执行的 SQL 脚本,选择建议 ID 1,并单击 Show SQL

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

8.

向下滚动至底部,您将看到创建物化视图的语句和您刚刚进行的更改。单击 Done

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

9.

单击 SQL Statements

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

10.

您将看到这些建议将改进的 SQL 语句。向上滚动。

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

11.

单击 Details

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

12.

您可以看到负载、任务选项和日志条目的详细信息。单击 Recommendations

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

13.

单击 Schedule Implementation 执行建议。

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

14.

输入 OBEIMPL<任何名称> 作为作业名,并单击 Submit

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

15.

您已经成功创建了作业。单击 Scheduler Job 链接。

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

16.

查看摘要信息,并滚动至底部查看状态。

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

17.

单击 OK

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

18.

单击 Database Instance 链接返回到 Administration 页面。

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

19.

单击 Schema 部分中的 Materialized Views

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

20.

在 Schema 域中输入 SH,然后单击 Go

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

21.

请注意,新创建的物化视图已出现在列表中。单击 Database Instance 链接返回到 Administration 页面。

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

返回主题列表

在本教程中,您学习了如何:

使用 SQL 缓存获取建议
检查和执行建议

返回主题列表

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