查看Oracle数据库中的执行计划
1、set autotrace traceonly命令
2、explain plan for命令
1)explain plan for select * from dual;
2)select * from table(dbms_xplan.display);
3、10046查看Oracle数据库中的执行计划
能够得到SQL执行计划中每一个执行步骤所消耗的逻辑读,物理读,和花费的时间。实际上,也可以通过gather_plan_sstatistics Hint 配合dbms_xplan 包一起使用得到和10046事件类似细粒度的明细的执行计划。
三个步骤就可以通过10046事件获得SQL的执行计划。
1.首先在当前session 中激活10046事件。
2.在当前session 中执行SQL语句。
3.最后当前session 中关闭10046事件。
当执行完上述步骤后,oracle就会将目标SQL的执行计划和明细资源消耗写入此session对应的trace文件中。
oracle会在user_dump_dest参数设置的目录下产生这个trace文件。
我们有两种方法在当前session中激活10046事件。
1.在当前session中执行alter session set events '10046 trace naem context forever,level 12'
2.在当前session中执行oradebug event 10046 trace name context forever,level 12'
上述命令中的关键字”level“后的数字是标识设置的10046时间的level值,这个值是可以修改的,我们
通常使用的值为12,表示在产生的trace文件中除了有目标sql的执行计划和资源消耗明细外,还包含
SQL使用的绑定变量的值以及该session所经历的等待事件,除了level值外,其他的部分是固定的语法,
是无法修改的。
我推荐使用第2种方法,因为可以在激活10046事件后执行命令oradebug tracefile_name可以获得当前
session 所对应的trace文件的具体路径名称。
示例:
1.我们先激活10046事件,我们是oradebug命令来激活。
SQL>oradebug setmypid
SQL>oradebug event 10046 trace name context forver,level 12
2.在当前session中激活了10046事件后,我们执行一个SQL语句
SQL>SELECT * FROM hr.test;
3.使用oradebug tracefile_name 命令查看当前session所对应的trace文件路径和名称
SQL>oradebug tracefile_name
/app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc
4.关闭当前session 中的10046事件:
SQL>oradebug event 10046 trace name context off
5.生成TKPROF报告
然后键入 tkprof /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc /tmp/tk.prf
查看Oracle数据库中的执行计划的更多相关文章
- 查看Oracle数据库中的,已经连接好的..当前用户状况
参考: http://stackoverflow.com/questions/1043096/how-to-list-active-open-connections-in-oracle 以sys身份连 ...
- 查看oracle数据库中的保留字
SQL> select * from v$reserved_words;
- 查看Oracle数据库中的所有用户名
select username from dba_users"
- 查看ORACLE 数据库及表信息
-- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户下的所有表 select user,t ...
- oracle数据库中字符乱码
1.1 88.152 os已安装中文包,以下确认os层面中文是否可以显示 1.2 88.153 os没有安装中文包,以下确认os层面中文无法显示 1.3 ...
- Oracle数据库中直方图对执行计划的影响
在Oracle数据库中,CBO会默认目标列的数据在其最小值low_value和最大值high_value之间均匀分布,并按照均匀分布原则,来计算目标列 施加查询条件后的可选择率以及结果集的cardin ...
- ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?
ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL ...
- 如何在Oracle数据库中查看哪些用户在执行哪些SQL
对于DBA来说,这是一个非常常见的问题,DBA需要找出以下问题: 1.哪些用户在跑哪些SQL? 2.一个特定的SQL是被哪个用户在执行? 3.一个特定的用户在跑哪些SQL? 从这些问题中可以很明显的看 ...
- Oracle中获取执行计划的几种方法分析
以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下 1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条S ...
随机推荐
- 各类最新Asp .Net Core 项目和示例源码
1.网站地址:http://www.freeboygirl.com2.网站Asp .Net Core 资料http://www.freeboygirl.com/blog/tag/asp%20net%2 ...
- c++构造顺序
1. 静态成员最先构造,按照静态成员初始化顺序,不是类里面的声明顺序 2. 父类构造 3. 非静态成员构造,按照类成员声明顺序,不是逗号初始化成员顺序 4. 自身构造函数 Demo: class Te ...
- 使用 VS Code 搭建 TypeScript 开发环境
使用 VS Code 搭建 TypeScript 开发环境 TypeScript 是 JavaScript 的超集,TypeScript 只是增强了 JavaScript 而非改变了 JavaScri ...
- C# 静态方法调用非静态方法
转载:http://blog.csdn.net/seattle1215/article/details/6657814 using System; using System.Collections.G ...
- 说说无线路由器后门的那些事儿(1)-D-Link篇
[原创]说说无线路由器后门的那些事儿(1)-D-Link篇 作 者: gamehacker 时 间: 2013-11-29,11:29:19 链 接: http://bbs.pediy.com/sho ...
- jquery data的用法
jquery data和 jquery attr, js getAttribute 有着本质的区别,并且无法用$(el).data('property')的方法,去获取$(el).attr('data ...
- CSS中的伪类和为伪元素
伪类: 伪元素:
- ASSERT()断言
头文件<assert.h> 作用:用于判断是否有非法的数据,有则程序报告错误,终止运行.(注意是非法情况,而不是错误情况) ASSERT()和assert()的区别: ASSERT ...
- mkdir -建立目录
总览 mkdir [选项] 目录... POSIX 选项: [-p] [-m mode] GNU 选项(缩写): [-p] [-m mode] [--verbose] [--help] [--vers ...
- 基于FPGA的以太网开发
基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但是由 ...