案例:使用dbms_xplan.display_cursor无法获取执行计划
案例:使用dbms_xplan.display_cursor无法获取执行计划
环境:RHEL 6.5 + Oracle 11.2.0.4
在一次测试中发现使用dbms_xplan.display_cursor无法获取到刚刚执行成功的SQL执行计划,现象如下:
test@DEMO> select count(*) from t;
COUNT(*)
----------
86391
test@DEMO> @x
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID 9babjv8yq8ru3, child number 1
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;
NOTE: cannot fetch plan for SQL_ID: 9babjv8yq8ru3, CHILD_NUMBER: 1
Please verify value of SQL_ID and CHILD_NUMBER;
It could also be that the plan is no longer in cursor cache (check v$sql_plan)
8 rows selected.
test@DEMO> get x
1* select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
正常应该显示我刚执行的SQL执行计划,可结果却没有,且显然这个sql_id为9babjv8yq8ru3的语句不是我刚执行的,看到对应SQL文本中有DBMS_OUTPUT关键字,进而想到去看下serveroutput的设置,是不是有影响:
test@DEMO> show serveroutput
serveroutput ON SIZE 1000000 FORMAT WORD_WRAPPED
test@DEMO> set serveroutput off
test@DEMO> show serveroutput
serveroutput OFF
可以看到serveroutput是开启的,正常默认情况应该是关闭,这里就先将其关闭后再试:
test@DEMO> select count(*) from t;
COUNT(*)
----------
86391
test@DEMO> @x
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID cyzznbykb509s, child number 1
-------------------------------------
select count(*) from t
Plan hash value: 2966233522
-------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.05 | 1239 |
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.05 | 1239 |
| 2 | TABLE ACCESS FULL| T | 1 | 73056 | 86391 |00:00:00.03 | 1239 |
-------------------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
18 rows selected.
可以正常显示执行计划了,看来的确是serveroutput开启影响到我这样看执行计划了。
那么我操作过程中并没有开启serveroutput,而默认就应该是off的。这时候想到是不是sqlplus预定义的glogin.sql文件中有对应的设置?去查看发现果然如此,具体如下:
cd $ORACLE_HOME/sqlplus/admin
vi glogin.sql
...省略无关内容...
set serveroutput on size 1000000
...省略无关内容...
如果近期工作经常需要这样查看执行计划,就把set serveroutput这一行配置注释或者删除即可。
案例:使用dbms_xplan.display_cursor无法获取执行计划的更多相关文章
- Oracle中获取执行计划的几种方法分析
以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下 1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条S ...
- oracle获取执行计划及优缺点 详解
一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了):1. explain plan for获取: 2. set autotrace on : 3. statistics_leve ...
- dbms_xplan的display查看执行计划
DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用 display函数,而实际的执行计划则是用display_curs ...
- ORACLE 获取执行计划的方法
一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了): 1. explain plan for获取: 2. set autotrace on : 3. statistics_lev ...
- 获取执行计划——EXPLAN PLAN
一般获取执行计划有四种途径:1.执行explain plan,查询结果输出表.2.查询动态性能视图,它显示缓存在库缓存中的执行计划(有时查不出结果是因为执行计划已经不在库缓存中).3.查询AWR或St ...
- 性能测试四十一:sql案例之慢sql配置、执行计划和索引
MYSQL 慢查询使用方法MYSQL慢查询介绍分析MySQL语句查询性能的问题时候,可以在MySQL记录中查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”.MYSQL自带的慢查 ...
- oracle中获取执行计划
1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加expla ...
- xplan.sql(本脚本获取执行计划显示执行顺序)
-- ---------------------------------------------------------------------------------------------- -- ...
- 获取执行计划之Autotrace
Autotrace 简介 AUTOTRACE是一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的处理有关的统计. AUTOTRACE的好处是您不必设置跟踪文件的格式,并且 ...
随机推荐
- 【Java必修课】图说Stream中的skip()和limit()方法及组合使用
1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...
- WebGPU学习系列目录
介绍 大家好,本系列从0开始学习WebGPU API,并给出相关的demo. WebGPU介绍 WebGPU相当于DX12/Vulkan,能让程序员更灵活地操作GPU,从而大幅提升性能. 为什么要学习 ...
- crontab 定时任务没有响应 检测步骤
设置规则 # 每分钟执行一次 */1 * * * * /scripts/script.sh # 每小时执行一次 0 */1 * * * /scripts/script.sh # 每天 02:00 执行 ...
- 精通awk系列(16):gawk支持的正则表达式
回到: Linux系列文章 Shell系列文章 Awk系列文章 gawk支持的正则 . # 匹配任意字符,包括换行符 ^ $ [...] [^...] | + * ? () {m} {m,} {m,n ...
- python集合和eval的使用
python集合和eval的使用 创建集合 使用工厂方法 set()和 frozenset(): >>> s = set('cheeseshop') >>> s s ...
- Java题库——Chapter16 JavaFX UI组件和多媒体
Chapter 16 JavaFX UI Controls and Multimedia Section 16.2 Labeled and Label1. To create a label with ...
- 初窥R(基本说明、获取帮助、工作空间、输入输出、包)
本篇简要介绍使用R的一些基本概念,包括基本说明.获取帮助.工作空间.输入输出,每个知识点中都会通过一个例子来练习. 一.R基本情况说明 1.R是一种区分大小写的解释性语言. 2.控制台默认使用命令提示 ...
- WPF应用中对WindowsFormHost内容进行裁剪
问题1: WPF中在使用WindowsFormsHost调用WinFrom控件时,若在WindowsFormsHost上层添加了WPF控件,该控件不会显示出来. <Grid> <W ...
- Git实战指南----跟着haibiscuit学Git(第九篇)
笔名: haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...
- Java中"或"运算与"与"运算快慢的三三两两
先上结论 模运算比与运算慢20%到30% 这是通过实验的方式得到的结论.因为没有大大可以进行明确指导,所以我以最终运行的结果为准.欢迎指正. 测试代码 @Test public void test10 ...