初学者之ORACLE生成执行计划
来源:互联网 发布:王小波黑铁时代知乎 编辑:程序博客网 时间:2024/06/16 21:14
1.Explain Plan For SQL
该方法不是SQL语句实际执行后所产生的执行计划,是根据统计信息估算的执行计划,信息来自plan_table。
SCOTT@orcl>explain plan for selecte.ename,e.sal,d.loc,d.deptno from emp e,dept d where e.deptno=d.deptno;
SCOTT@orcl>select * from table(dbms_xplan.display());
第二句话是从plan_table里取数据,它只取plan_table里最新的一条语句
证实一下:
2.SQLPLUS AUTOTRACE
set autotrace on|off|traceonly {explain|statistics};
set autotrace on --实际执行SQL并显示执行结果,显示执行计划与统计信息
set autotraceoff关闭AUTOTRACE
set autotrace traceonly显示执行计划与统计信息
set autotracetraceonly explain显示执行计划
set autotrace traceonly statistics显示统计信息
注:除setautotrace traceonly {explain | statistics}外均实际执行SQL,但仍未必是真实计划,信息来自plan_table。
证实一下:
如何打开autotrace功能
1. 创建基础表
通过运行$ORACLE_HOME/rdbms/admin/utlxplan 脚本完成,该脚本用于创建plan_table表。
并授权给public(公共角色)
grant all on plan_table to public;
2.创建plustrace 角色
这里需要运行$ORACLE_HOME/sqlplus/admin/plustrce.sql
3.所有用户都可以查看sql执行计划
grant plustrace to public;
3.SQL TRACE(10046和10053)
可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。
如何产生trace文件
1) 启动SQL_TRACE
SCOTT@orcl>alter session set sql_trace=true;
2) 进行相关事务操作
SCOTT@orcl>select * from emp;
3) 关闭SQL_TRACE
SCOTT@orcl>altersession set sql_trace=false
SCOTT@ orcl>col name for a40;
SCOTT@ orcl>col value for a65;
SCOTT@ orcl>select name,value from v$diag_infowhere name like '%Default%';
NAME VALUE
-----------------------------------------------------------------------------
Default Trace File /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_13629.trc
该事件收集的信息也是放在trace文件中,查看trace文件的方法,使用TKPROF 工具(TKPROF工具其实就是一个将文件中的内容进行下格式话处理,使你能看的更舒畅)。
$tkprof/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_13629.trc mytrace
$ls -al mytrace*
$-rw-r--r-- 1 oracle oinstall 28817 Apr 26 17:35mytrace.prf
$more mytrace.prf
证实一下:
两个特殊的跟踪事件10046事件和10053事件
10046事件按照收集信息内容,可以分成4个级别:
Level1: 等同于SQL_TRACE的功能
Level4: 在Level 1的基础上增加收集绑定变量的信息
Level8: 在Level 1 的基础上增加等待事件的信息
Level12:等同于Level 4+Level 8, 即同时收集绑定变量信息和等待事件信息。
SQL>alter session set events '10046 trace namecontext forever, level 12'; --启动10046事件
执行相关事务
SQL>alter session set events '10046 trace namecontext off'; -- 关闭10046事件
10053 事件是oracle提供的用于跟踪sql语句成本计算的内部事件,它能记载CBO模式下oracle优化器如何计算 sql成本,生成相应的执行计划。
跟10046跟踪事件不同,10053提供了两个跟踪级别,但是级别2的跟踪信息比级别1少(其他跟踪事件如10046跟踪,级别越高信息越多),
如何设置10053事件
设置本session的10053
Alter session set events '10053 trace namecontext forever,level 1'; --启动10053事件
执行相关事务
Alter session set events '10053 trace namecontext off'; -- 关闭10046事件
对于SQL_TRACE,一般用tkprof看的更清楚些。
$tkprof/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_13629.trc orcl_ora_13629.txt
$ls -al orcl_ora_13629.txt
$-rw-r--r-- 1 oracle oinstall 28817 Apr 26 17:35orcl_ora_13629.txt
$more orcl_ora_13629.txt
- 初学者之ORACLE生成执行计划
- oracle: 执行计划2-- 如何生成与获取执行计划
- oracle学习之--oracle的执行计划
- Oracle优化之Oracle的执行计划
- oracle读懂执行计划之得到sql的执行计划
- ORACLE的执行计划之访问路径
- Oracle优化之执行计划管理
- oracle 优化器之执行计划
- Oracle执行计划之SQL优化
- Oracle执行计划之动态采样
- Oracle之获取真正的执行计划
- Oracle 生成和显示执行计划的方法
- Oracle 生成和显示执行计划的方法
- Oracle 生成和显示执行计划的方法
- oracle:优化2----使用hints,加速生成执行计划
- ORACLE的执行计划
- ORACLE的执行计划
- oracle 执行计划表
- 阅读程序2
- JAVA学习笔记二之(2)关键字和标识符
- MySQL百万级数据库优化方案
- 互联网公司面试题目
- maven 报Unable to locate the Javac Compiler in: D:\Program Files\Java\jdk1.6.0_20\..\lib\tools.jar
- 初学者之ORACLE生成执行计划
- 阅读程序3
- zabbix3.0.2 实现发送email报警的详细过程
- 07-图4 哈利·波特的考试
- 【学习小记】用splay维护序列
- 阅读程序4
- excel字符串拆分为行
- CentOS-6.5-x86_64 设置静态IP地址
- Glide优势与特点