表中只有几行数据但是查询速度很慢的问题

通过segment advisor来查看存储空间相关的建议,通过调用DBMS_SPACE PL/SQL包访问 segment advisor
SELECT
   'segment Advisor --------------------------------'|| chr(10) ||
   'TABLESPACE_NAME  :'|| tablespace_name    || chr(10) ||
   'SEGMENT_OWNER    :'|| segment_owner      || chr(10) ||
   'SEGMENT_NAME       :'|| segment_name       || chr(10) ||
   'ALLOCATED_SPACE   :'|| allocated_space      || chr(10) ||
   'RECLAIMABLE_SPACE:'|| reclaimable_space   || chr(10) ||
   'RECOMMENDATIONS :'|| recommendations    || chr(10) ||
   'SOLUTION   1           :'|| c1                           || chr(10) ||
   'SOLUTION   2           :'|| c2                           || chr(10) ||
   'SOLUTION   3           :'|| c3 Advice
from
TABLE(dbms_space.asa_recommedations('FALSE','FALSE','FALSE'));
工作原理
在oracle database 10g R2 之后的版本中,oracle自动调度并运行一个段顾问作业。这个作业分析数据库中的段,并分析结果存放在内部表中。段顾问的输出包括分析结果(需要解决的问题)以及建议(解决问题执行的操作)。段顾问的分析结果包括下面类型
1.适合进行收缩操作的段;
2.具有显著行链接的段;
3.可能会从oltp压缩中获益的段。
段顾问通过一个自动调度的DBMS_SCHEDULER作业来定期计算建议。可以通过查询DBA_AUTO_SEGADV_SUMMARY视图,查看自动作业的最后一次运行的时间
第二种情况,有一张表需要大量的数据更新。发现对这张表的查询速度有所下降。怀疑性能差的原因是航连接。因此需要手动来通过段顾问确认是否存在行链接

(1)创建一个任务
(2)为这个任务分配对象
(3)设置任务参数。
(4)执行这个任务。
注意:用户要有执行DBMS_ADVISOR的权限通过grant授权



详见oracledatabase11g性能优化攻略34  20页

请使用浏览器的分享功能分享到微信等