[20170615]执行dbms_sqldiag.dump_trace看执行计划.txt

--//上午在想查看10053执行计划时使用包时出现如下提示:

SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select     count(*) from    t1 where    skew = 73;
  COUNT(*)
----------
        73

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  41bbtn98pwgyq, child number 0
-------------------------------------
select     count(*) from    t1 where    skew = 73
Plan hash value: 2432955788
----------------------------------------------------------------------------
| Id  | Operation         | Name  | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |       |        |       |     1 (100)|          |
|   1 |  SORT AGGREGATE   |       |      1 |     3 |            |          |
|*  2 |   INDEX RANGE SCAN| T1_I1 |     86 |   258 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / T1@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("SKEW"=73)

--//使用包dbms_sqldiag.dump_trace最大的好处是无需硬分析,而使用10053要进行硬分析才能获得执行计划.

SCOTT@book> @ &r/10053x 41bbtn98pwgyq 0
BEGIN dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'41bbtn98pwgyq'); END;

*
ERROR at line 1:
ORA-44003: invalid SQL name
ORA-06512: at "SYS.DBMS_ASSERT", line 206
ORA-06512: at "SYS.DBMS_SQLDIAG", line 1185
ORA-06512: at line 1
--//报错.

SYS@book> grant execute on dbms_sqldiag to scott;
Grant succeeded.
--//以sys用户授权后再次执行问题依旧.
SYS@book> revoke execute on dbms_sqldiag from scott;
Revoke succeeded.

--//google,百度发现别人都可以,而且我以前的测试也没有遇到问题.最终我发现只要p_file_id参数第1个字母不是数字就ok了,例如:

SCOTT@book> exec dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'a1bbtn98pwgyq');
PL/SQL procedure successfully completed.

SCOTT@book> exec dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'11bbtn98pwgyq');
BEGIN dbms_sqldiag.dump_trace(p_sql_id=>'41bbtn98pwgyq',p_child_number=>0,p_component=>'Compiler',p_file_id=>'11bbtn98pwgyq'); END;

*
ERROR at line 1:
ORA-44003: invalid SQL name
ORA-06512: at "SYS.DBMS_ASSERT", line 206
ORA-06512: at "SYS.DBMS_SQLDIAG", line 1185
ORA-06512: at line 1

SCOTT@book> @ &r/desc_proc sys dbms_sqldiag dump_trace
INPUT OWNER PACKAGE_NAME OBJECT_NAME
sample : @desc_proc sys dbms_stats gather_%_stats

OWNER PACKAGE_NAME OBJECT_NAME SEQUENCE ARGUMENT_NAME        DATA_TYPE            IN_OUT    DATA_TYPE DEFAULTED
----- ------------ ----------- -------- -------------------- -------------------- --------- --------- ----------
SYS   DBMS_SQLDIAG DUMP_TRACE         1 P_SQL_ID             VARCHAR2             IN        VARCHAR2  N
                                      2 P_CHILD_NUMBER       NUMBER               IN        NUMBER    Y
                                      3 P_COMPONENT          VARCHAR2             IN        VARCHAR2  Y
                                      4 P_FILE_ID            VARCHAR2             IN        VARCHAR2  Y

--//P_FILE_ID参数仅仅字符类型,并没有说明第1个参数的字符是数字就不行,oracle真是很奇怪....

[20170615]执行dbms_sqldiag.dump_trace看执行计划.txt的更多相关文章

  1. 面试题:try,catch,finally都有return语句时执行哪个 已看1

    1.不管有木有出现异常,finally块中代码都会执行: return 先执行 把值临时存储起来, 执行完finally之后再取出来 值是不会改变的2.当try和catch中有return时,fina ...

  2. 跟我一起读postgresql源码(六)——Executor(查询执行模块之——查询执行策略)

    时光荏苒,岁月如梭.楼主已经很久没有更新了.之前说好的一周一更的没有做到.实在是事出有因,没能静下心来好好看代码.当然这不能作为我不更新的理由,时间挤挤还是有的,拖了这么久,该再写点东西了,不然人就怠 ...

  3. PHP exec/system启动windows应用程序,执行.bat批处理,执行cmd命令

    exec 或者 system 都可以调用cmd 的命令 直接上代码: <?php /** 打开windows的计算器 */ exec('start C:WindowsSystem32calc.e ...

  4. SQL查询语句执行速度快,存储过程执行慢

    今天一个生成10w条数据的存储过程执行了95s,但是单独执行SQL语句只需要28s,查资料后发现原来这是存储过程的机制导致的,也就是传说中的参数嗅探 网上的一段话: (1)可能是发生了参数嗅探,第一次 ...

  5. Linux下执行自定义的可执行命令无效原因

    1 前言 用golang编译成可执行文件tt stats text.txt(tt 是编译后重命名的可执行文件),然后直接执行失败了,后来使用./tt stats text.txt可以了. 执行结果如下 ...

  6. 菜刀(代码执行)函数和命令执行函数详解及Getshell方法

    i春秋作家:大家奥斯的哦 原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html 代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时 ...

  7. 深入理解 JS 引擎执行机制(同步执行、异步执行以及同步中的异步执行)

    首先明确两点: 1.JS 执行机制是单线程. 2.JS的Event loop是JS的执行机制,深入了解Event loop,就等于深入了解JS引擎的执行. 单线程执行带来什么问题? 在JS执行中都是单 ...

  8. python--selenium多线程执行用例实例/执行多个用例

    python--selenium多线程执行用例实例/执行多个用例 我们在做selenium测试的时候呢,经常会碰到一些需要执行多个用例的情况,也就是多线 程执行py程序,我们前面讲过单个的py用例怎么 ...

  9. 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)

    前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...

随机推荐

  1. Liferay7 BPM门户开发之21: 理解消息总线(Message Bus)体系

    Liferay Message Bus提供了松耦合的消息发送接收机制(生产和消费的设计模式),用于本地服务,不支持远程服务,支持集群. 主要用途: 两个或多个插件之间的通讯. 在事件中发送搜索索引,比 ...

  2. 采用太平洋AI的DINK框架一键运行3D点云识别,一键训练深度学习模型

    DINK安装视频教程:  http://fp-ai.com/video_details.html?id=072b030ba126b2f4b2374f342be9ed44 DINK一键启动视频教程:   ...

  3. 写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP

    去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过 ...

  4. 可以用软连接的方式解决linux内存空间不足的问题

    突然提示说/var空间满了,然后接着系统卡死,最后彻底没辙,重启试试,没想到提示什么系统错误,请联系管理员之类的提示语,也进不去登陆界面啥了.之后用其他电脑连接SSH用root账号访问. # cd / ...

  5. Android_学习系列(33)--App应用之提交到各大市场渠道

    本文同步更新在http://hmu140482.chinaw3.com/?p=315.    Android的终端碎片化问题,是一个很讨厌的问题.    而对于国内开发者来说,Android的市场“碎 ...

  6. CentOS 6.5静态IP的设置(NAT和桥接联网方式都适用)

    不多说,直接上干货! 为了方便,用Xshell来.并将IP设置为静态的.因为,在CentOS里,若不对其IP进行静态设置的话,则每次开机,其IP都是动态变化的,这样会给后续工作带来麻烦.为此,我们需将 ...

  7. c++中运算符重载

    c++语言中运算符重载都是通过函数来实现的,所以其实质为函数重载,当c++语言原有的一个运算符被重载之后,它原来所具有的语义并没有消失,只相当于针对一个特定的类定义了一个新的运算符. <1> ...

  8. PowerDesigner 修改Name ,Code 不变

    tools-> General   Options-> Dialog:Operation   Modes: 去掉 NameToCodeMirroring 前面的√      

  9. [PHP] 数据结构-反转链表PHP实现

    1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头3.old->next不能直接指向new,而是应该 ...

  10. WindowsPhone8.1 开发技巧

    1.调用系统内置滤镜: Windows.ApplicationModel.CameraApplicationManager.ShowInstalledApplicationsUI(); 2.完全退出应 ...