1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中。

首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:

explain plan for SQL语句

然后,在计划表中查询刚刚生成的执行计划,语句如下:

select * from table(dbms_xplan.display);

注意:Explain plan只生成执行计划,并不会真正执行SQL语句,因此产生的执行计划有可能不准,因为:

1)当前的环境可能和执行计划生成时的环境不同;

2)不会考虑绑定变量的数据类型;

3)不进行变量窥视。

2. 查询内存中缓存的执行计划 (dbms_xplan.display_cursor)如果你想获取正在执行的或刚执行结束的SQL语句真实的执行计划(即获取library cache中的执行计划),可以到动态性能视图里查询。方法如下:

1)获取SQL语句的游标游标分为父游标和子游标,父游标由sql_id(或联合address和hash_value)字段表示,子游标由child_number字段表示。

如果SQL语句正在运行,可以从v$session中获得它的游标信息,如:

select status, sql_id, sql_child_number from v$session where status='ACTIVE' and ....

如果知道SQL语句包含某些关键字,可以从v$sql视图中获得它的游标信息,如:

select sql_id, child_number, sql_text from v$sql where sql_text like '%关键字%‘

2)获取库缓存中的执行计划为了获取缓存库中的执行计划,可以直接查询动态性能视图v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是以sql_id和子游标为参数,执行如下语句:

select * from table(dbms_xplan.display_cursor('sql_id',child_number));

3)获取前一次的执行计划:set serveroutput off

select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));

3. 查询历史执行计划(dbms_xplan.display_awr)AWR会定时把动态性能视图中的执行计划保存到dba_hist_sql_plan视图中,如果你想要查看历史执行计划,可以采用如下方法查询:

select * from table(dbms_xplan.display_awr('sql_id');

4. 在用sqlplus做SQL开发是(Autotrace)set autotrace是sqlplus工具的一个功能,只能在通过sqlplus连接的session中使用,它非常适合在开发时测试SQL语句的性能,有以下几种参数可供选择:

SET AUTOTRACE OFF ---------------- 不显示执行计划和统计信息,这是缺省模式

SET AUTOTRACE ON EXPLAIN ------ 只显示优化器执行计划

SET AUTOTRACE ON STATISTICS -- 只显示统计信息

SET AUTOTRACE ON ----------------- 执行计划和统计信息同时显示

SET AUTOTRACE TRACEONLY ------ 不真正执行,只显示预期的执行计划,同explain plan

5. 生成Trace文件查询详细的执行计划 (SQL_Trace, 10046)SQL_TRACE作为初始化参数可以在实例级别启用,也可以只在会话级别启用,在实例级别启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在一般情况下,我们使用sql_trace跟踪当前进程,方法如下:

SQL>alter session set sql_trace=true;

...被跟踪的SQL语句...

SQL>alter session set sql_trace=false;

如果要跟踪其它进程,可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION来实现,例如:SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true) --开始跟踪

SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,false) --结束跟踪

生成trace文件后,再用tkprof 工具将sql trace 生成的跟踪文件转换成易读的格式,语法如下:

tkprof inputfile outputfile

10046事件是SQL_TRACE的一个升级版,它也是追踪会话,生成Trace文件,只是它里面的内容更详细,

oracle的解析計劃,Oracle中获取执行计划的几种方法分析相关推荐

  1. Oracle查看执行计划的几种方法

    Oracle查看执行计划的几种方法 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRA ...

  2. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  3. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

  4. GridView控件RowDataBound事件中获取列字段的几种方法(转)

    GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行.列数据的途径. 软件开发网 www.mscto.com 要获取当前行的某个数据列,有 ...

  5. android获取位图字节数,Android中获取图片尺寸大小两种方法

    两种方法  建议用第二种 private void getPictureSize(String path) { /*第一种直接把bitmap加载到内存中,通过对bitmap的测量, 得出宽高,由于这个 ...

  6. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法

    1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...

  7. 枚举类中获取枚举值的几种方法

    在开发的过程中我们经常会定义枚举类,枚举类中获取枚举值的方式也有很多种,下面我们就探究一下大家常用的几种方式: 枚举类 public enum TestEnum {ONE(1,"one&qu ...

  8. java取子串_Java中获取子字符串的几种方法示例

    首先假如有这样一串字符串: String s = "共 100 页, 1 2 3 4..."; 假如我想把"100"给取出来,该如何做? 方法一: 采用spli ...

  9. SAP中寄售补货的两种方法分析

    关于寄售补货,移动类型631,可以通过两种方式从公司库存移动到客户寄售库存. 1.在系统中建立客户物料关系的销售订单或销售计划协议.通过针对销售订单的发货来达到从公司库存移动到客户寄售库存的寄售补货的 ...

最新文章

  1. CISCO交换机配置命令之二
  2. 昨日-[鲁豫有约]: 乔羽
  3. VUE从零开始系列(路由钩子及插件开发),呆萌小白上手VUE
  4. 【网摘】Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明
  5. linux中更新perl的版本
  6. Netty工作笔记0071---Protobuf传输多种类型
  7. Step by Step-构建自己的ORM系列-索引
  8. 字符串的连接(复习)
  9. java线程wait和notify详解
  10. Markdown 表格
  11. 2021-10-1825. K 个一组翻转链表
  12. 项目质量管理—七种基本质量工具
  13. Linux SVN忽略文件夹更新的命令与方法
  14. 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
  15. 摄像头 SONY VISCA 协议
  16. Android Service 定时任务
  17. 28.QT-QPainter介绍
  18. 计算机二级考试office操作题11,【第十一套】计算机二级MS Office操作题
  19. Oracle导入 1T 数据
  20. 基于FFmpeg 实现RTSP, 音视频编解码,视频流添加文字,音视频合成MP4

热门文章

  1. appium入门篇(2)--desired capabilities
  2. ThinPHP3.2中 addAll()批量插入数据
  3. 2015年全年目标及执行情况跟踪
  4. Adaptive Placeholder – 自适应的占位符效果
  5. uva 620 Cellular Structure
  6. Sharepoint学习笔记—ECM系列--从.CSV文件导入术语集(Term Sets)
  7. 人体塑造教程+源文件+录象教程
  8. 《一》Android 数据库 SQlite SQLiteOpenHelper
  9. r语言html爬虫,如何用R语言爬取网页中的表格
  10. 守护线程C语言windows,C言语如何利用子线程刷新主线程