查看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 ...
随机推荐
- ccs中a链接的四种状态
什么是超链接? 超链接通俗地指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序.而在一个网页中 ...
- 为何单片机程序不用加载到RAM
一. STM32程序构成 1.1. STM32的存储空间 1.1.1. RAM 1.1.1.1 单片机的RAM是SRAM. 1.1.1.2. SRAM特点 a.优点,速度快,不必配合内存刷新电路,可提 ...
- django商城项目之用sentry管理日志
之前写商城项目的时候,采用的日志处理方式为在终端输出或者写入文件,这样的话,项目部署上线之后,若服务器出现错误,需要到服务器查看相关的错误日志,很不方便.后期在学习别人开源项目的时候,学习到一个开源的 ...
- MySQL explain,type分析(转)
问题:explain结果中的type字段代表什么意思? MySQL的官网解释非常简洁,只用了3个单词:连接类型(the join type).它描述了找到所需数据使用的扫描方式. 最为常见的扫描方式有 ...
- django报错处理:对应ip无法登陆与使用bootstrap移动端响应工具,head响应实例
1.报错 Invalid HTTP_HOST header: '192.168.1.100:8000'. You may need to add '192.168.1.100' to ALLOWED_ ...
- oracle比较两个查询结果的差异
可以使用minus select * from A minus select * from B; select * from B minus select * from A;
- 我用过的gitlab api
1.新增tag https://docs.gitlab.com/ee/api/tags.html#list-project-repository-tags 2.获取指定项目合分支的最新一次merge ...
- css 3D动画
一.今天让我们来学习一下css 3D吧! 1.首先我们要学习好css3 3d一定要有一定的立体感! 2.再来那就聊聊原理吧! 3.css3 3d 顾名思义是由两个2d名片组成的 但不是让你建立连个2d ...
- wepy-wxss报错
慢慢积攒下wepy 的一些BUG吧 1.页面在page目录下明明删除了某个子页面文件,打开wepy却一直报错!wxml报错或者wxss报错,提示的页面我为了排错都直接delete掉了,还是报错???思 ...
- WebStorm / IDEA最新激活码2019----100%随时可用
亲测日期:2019.12.24 网址里面有 lookdiv.com 里面的钥匙就是lookdiv.com 或者直接点击备用码 http://lookdiv.com/spare.html 进入可能会比 ...