oracle用来执行目标sql语句的这些步骤的组合就被成为执行计划
查看执行计划:
explain plan for
dbms_xplan
sqlplus中autotrace的开关
10046事件
10053事件
AWR报告
一些个性化的脚本
在oracle数据库中判断执行计划是否准确,就是看目标sql是否真正被执行过,真正执行过的sql所对因的执行计划就是准的,泛指有可能不准。
查看执行计划的顺序:可以根据tom书中所述,画成一个执行计划树
oracle最常见的执行计划
与表相关的执行计划:全表扫描和ROWID扫描,table access full,table access by user rowid,table access by index rowid,table access by user rowid
与Btree相关的执行计划:index unique scan,index fast full scan,index skip scan,
与位图索引相关的执行计划;BITMAP INDEX SINGLE VALUE ,BITMAP CONVERSION TO ROWIDS,BITMAP INDEX RANGE SCAN,BITMAP INDEX FULL SCAN
BITMAP INDEX FAST FULL SCAN,BITMAP OR,BITMAP AND ,BITMAP MINUS
与表相关的执行计划:SORT IN,MERGE JOIN,NESTED LOOPS,HASH JOIN,HASH JOIN ANTI,MERGE JOIN ANTI,HASH JOIN ANTI ,HASH JOIN SEMI,MRGE JOIN SEMI
NESTED LOOPS SEMI
其他典型的执行计划:and-equal(INDEX MERGE),INDEX JOIN,VIEW, FILTER, SORT, SORT AGGREGATE,SORT UNIQUE,SORT JOIN,SORT GROUP BY ,SORT ORDER BY
BUFFER SORT, UNION ,UNION ALL, CONCAT, CONNECT BY
oracle稳固执行计划
oracle 10g中sql profile是oralce9i中stored outline的进化。
优点:更容易生成,更改和控制 在对SQL语句的支持上做的更好
目的:锁定或者稳定执行计划
在不能修改目标SQL的sql文本情况下使目标sql语句按指定的执行计划运行
SQL profile有两种类型:一种是Automatic类型,一种是manual类型
automatic类型的SQL profile并不能完全起到稳固目标SQL的执行计划的作用,虽然它可以确定可以用来调整执行计划
使用SPM来稳定执行计划
SQL PROFILE实际上只是一种亡羊补牢,被动的技术手段,应用在那些执行计划已经发生了不好的变更的SQL上。
SPM是一种主动的稳定执行计划手段,能够保证被验证过的执行计划才会被启用