暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何查看执行计划

oracleEDU 2017-10-25
792

在ORACLE数据库中,需要对SQL语句进行优化的话需要知道其执行计划,从而针对性的进行调整.ORACLE的执行计划的获得有几种方法,下面就来总结下。

em企业管理器的使用

在最下面 SQL Worksheet  -->  plan

EXPLAIN的使用

Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。

语法

explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ] FOR < SQL_STATEMENT >

STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。

SQL_STATEMENT:是真正的SQL语句

例:

SQL> explain plan set statement_id='test' for select * from scott.emp;

Explained.

执行下面语句可以查询到执行计划

方式一:

SQL> select * from table(dbms_xplan.display);

方式二:

@?/rdbms/admin/utlxplp.sql

两种方式查看到结果是一样。

方式三:

SQL> select operation,options,object_name,object_type,id,parent_id from plan_table where statement_id='test' order by id;

AUTOTRACE的使用

默认只有管理员可以用

如果普通用户要使用auotrace 

必须执行下列脚本,然后把角色plustrace授予给这个人

@$ORACLE_HOME/sqlplus/admin/plustrce.sql;

将角色plustrace授予需要autotrace的用户:

SQL>grant plustrace to 用户;

经过以上步骤的设置,就可以在sql*plus中使用autotrace了。

使用起来非常方便,只要使用一条命令就可以了

SQL>SET AUTOTRACE ON;

*autotrace功能只能在SQL*PLUS里使用

以下是该命令的一些参数:

1. 显示执行计划--(会同时执行语句得到结果)

SQL>set autotrace on explain;

2. 显示统计信息---(会同时执行语句得到结果)

SQL>set autotrace on statistics;

(备注:对于SYS用户,统计信息将会是0)

3. 显示执行计划,屏蔽执行结果--(但语句实质还执行的)

SQL> set autotrace traceonly; 

4. 仅仅显示执行计划,屏蔽其他一切结果--(语句还是执行了)

SQL>set autotrace traceonly explain;

(备注:对于仅仅查看大表的Explain Plan非常管用)

关闭

SQL>set autotrace off;

最后修改时间:2021-04-28 20:17:59
文章转载自oracleEDU,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论