攻略1-10 手工生成段顾问建议

问题描述

你有一张表需要进行大量数据的更新。用户反映对这张表的查询速度有所下降。作为分析过程的一部分,你需要为这张表手工运行段顾问,看看是否存在与空间相关的问题,例如行迁移/行链接等,或者是否在高水位线之下有未使用的空间。

解决方案

可以手工运行段顾问,并且告诉它分析某个特定表空间中的所有段,或者查看某个特定的对象(例如某个表或索引)。下面是手工执行段顾问的步骤。

(1) 创建一个任务。

(2) 为这个任务分配一个对象。

(3) 设置任务参数。

(4) 执行这个任务。

注意 数据库用户要想执行DBMS_ADVISOR,需要具有ADVISOR系统权限。这个权限是通过GRANT语句授予的。

下面的例子将上面的四个步骤封装在一段PL/SQL代码中。针对的表是EMP表,其所有者为MV_MAINT:

enter image description here

enter image description here

现在可以执行DBMS_SPACE包,并指示它取出手工执行段顾问所得的相关信息(通过输入参数,详见表1-7),来查看段顾问建议中与这张表相关的信息,例如:

enter image description here

enter image description here

工作原理

DBMS_ADVISOR包被用来手工指导段顾问生成针对某张特定表的建议。这个包包含几个进行某种操作(例如创建并执行一个任务)的过程。表1-7列出了与段顾问相关的过程。

enter image description here

段顾问能够在不同粒度级别上被调用。例如,你可以为一个表空间中所有对象生成建议,也可以为特定的表、索引或分区生成建议。表1-8列出了通过DBMS-ADVISOR.CREATE-TASK过程可以获得段顾问建议的对象类型。

enter image description here enter image description here 你还可以指定段顾问运行的最大时间。这是由SET_TASK_PARAMETER过程来控制的。这个过程同时还控制生成建议的类型。表1-9描述了这个过程的有效输入。

enter image description here

目录