执行计划: 首先在分析的用户下执行rdbms\admin\utlxplan
sql 用sys 用户登录:sqlplus\admin\plustrace
sql grant sqlplus to user_name; 1
找出耗费资源比较多的语句 SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions, buffer_gets/executions AVG FROM v$sqlarea WHERE executions>0 AND buffer_gets > 100000 ORDER BY 5; 2
如何分析执行计划: SQL> SELECT * FROM LARGE_TABLE where USERNAME = ‘TEST’; Query Plan ----------------------------------------- SELECT STATEMENT Optimizer=CHOOSE (Cost=1234 Card=1 Bytes=14) TABLE ACCESS FULL LARGE_TABLE [:Q65001] [ANALYZED] TABLE ACCESS FULL large_table:在large_table 上做全表扫描 [:Q65001] 表明该部分查询是以并行方式运行的
[ANALYZED] 表明操作中引用的对象被分析过了,在数据字典中有该对象的统计信息可以供CBO 使用
各个表之间是如何关联的 在执行计划中,需要知道哪个操作是先执行的,哪个操作是后执行的,这对于判断哪个表为驱动表有用处
判断之前,如果对表的访问是通过rowid,且该rowid 的值是从索引扫描中得来得,则将该索引扫描先从执行计划中暂时去掉
然后在执行计划剩下的部分中,判断执行顺序