网络编程
位置:首页>> 网络编程>> 数据库>> ORACLE数据库查看执行计划的方法(3)

ORACLE数据库查看执行计划的方法(3)

 来源:asp之家 发布时间:2012-06-06 20:15:52 

标签:ORACLE,执行计划

4.3跟踪其它用户的进程,在很多时候我们需要跟踪其它用户的进程,而不是当前用户,可以通过ORACLE提供的系统包
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来完成。
例如: 

代码如下:


SELECT SID, SERIAL#, USERNAME FROM V$SESSION WHERE USERNAME = 'ETL'
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,TRUE);
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,FALSE);


5 利用10046事件 

代码如下:


ALTER SESSION SET TRACEFILE_IDENTIFIER = 10046;
ALTER SESSION SET EVENTS='10046 trace name context forever, level 8';
SELECT * FROM SCOTT.EMP;
ALTER SESSION SET EVENTS ='10046 trace name context off';
然后你可以用脚本查看追踪文件的位置
SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T
查询结果为wgods_ora_28279.trc文件, 但是去相应目录却没有找到对应的追踪文件,而是如下trace文件:wgods_ora_28279_10046.trc


6 利用10053事件

有点类似10046,在此略过、

7 系统视图

通过下面一些系统视图,你可以看到一些零散的执行计划的相关信息,有兴趣的话可以多去研究一下。 

代码如下:


SELECT * FROM V$SQL_PLAN
SELECT * FROM V$RSRC_PLAN_CPU_MTH
SELECT * FROM V$SQL_PLAN_STATISTICS
SELECT * FROM V$SQL_PLAN_STATISTICS_ALL
SELECT * FROM V$SQLAREA_PLAN_HASH
SELECT * FROM V$RSRC_PLAN_HISTORY


三、看懂执行计划

1.执行顺序

执行顺序的原则是:由上至下,从右向左

由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行

从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。

当然,你在PL/SQL工具中也可以通过它提供的功能来查看执行顺序。如下图所示:

2.执行计划中字段解释

SQL>
名词解释:
recursive calls           递归调用
db block gets           从buffer cache中读取的block的数量当前请求的块数目,当前模式块意思就是在操作中正好提取的块数目,而不是在一致性读的情况下而产生的正常情况下,一个查询提取的块是在查询查询开始的那个时间点上存在的数据库,当前块是在这个时候存在数据块,而不是这个时间点之前或者之后的的数据块数目。
consistent gets          从buffer cache中读取的undo数据的block的数量数据请求总数在回滚段Buffer中的数据一致性读所需要的数据块,,这里的概念是在你处理你这个操作的时侯需要在一致性读状态上处理多个块,这些块产生的主要原因是因为你在查询过程中,由于其它会话对数据 块进行操作,而对所要查询的块有了修改,但是由于我们的查询是在这些修改之前调用的,所要需要对回滚 段中的数据块的前映像进行查询,以保证数据的一致性。这样就产生了一致性读。

physical reads           物理读 就是从磁盘上读取数据块的数量。其产生的主要原因是:
                  1:在数据库高速缓存中不存在这些块。
                  2:全表扫描
                  3:磁盘排序
redo size              DML生成的redo的大小
sorts (memory)           在内存执行的排序量
sorts (disk)            在磁盘执行的排序量
2091 bytes sent via SQL*Net to client     从SQL*Net向客户端发送了2091字节的数据
416 bytes received via SQL*Net from client  客户端向SQL*Net发送了416字节的数据。
参考文档:SQLPlus User's Guide and Reference Release 11.1

db block gets 、 consistent gets 、 physical reads这三者的关系可以概括为:逻辑读指的是ORACLE从内存读到的数据块块数量,一般来说是:
consistent gets + db block gets. 当在内存中找不到所需要的数据块的话,就需要从磁盘中获取,于是就产生了物理读。

0
投稿

猜你喜欢

  • 恭喜您,您中奖了,你的中奖码是(请牢记,领奖需要):XXXXXXXXXXX然后用户输入XXXXXXXXXXX,简单验证后就可以领奖了。你使用
  • 在认识ImageMagick之前,我使用的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用
  • 为了让鼠标移到小图上显示大图,我利用鼠标事件新建了一个层来显示大图.当然之前最好得到XY坐标取得当前鼠标的X,Y坐标:function&nb
  • (5)SELECT (5-2) DISTINCT(5-3)TOP(<top_specification>)(5-1) <s
  • 不用整天为美化select控件烦恼了。1、可批量美化select控件。2、可以有onchange句柄。3、触发onchange的函数可带参数
  • 代理模式的优点代理模式可以保护原对象,控制对原对象的访问;代理模式可以增强原对象的功能,通过代理对象来添加一些额外的功能;代理模式可以提高系
  • 虽然现在IE还是主导了整个浏览器的天下,但IE靠的并非是产品设计上的优势,而是依靠windows的力量,因为绝大多数的初级网民认为IE的产品
  • ASP由于是一种古老的语言,它的一些功能对UTF-8支持非常差。比如,你想生成一个UTF-8格式的文件,使用常用的 scrīpting.Fi
  • 比如有一个需求,通过sql语句,返回-5至5的随机整数.如果这一个放在PHP中,则非常简单直接用print rand(-5,5);?>
  • 数据库服务器主要用于存储、查询、检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性、可靠性和稳定性等方面都有很高的要求。下面
  • 数据库(database)MySQL 是最流行的开源数据库系统,可运行于几乎所有的操作系统平台。在《MySQL 安装》一文中详解介绍了安装步
  • 你是否发现,在浩如烟海的应用程序堆里,具有漂亮图标和清爽名字的 App 更容易被用户喜爱。作为开发者,面对这自己的作品,能否自问一句:“从图
  • 信息图表设计(Inforgraphic Design),是信息设计(Information Design)学科的一个分支,它兴起于20世纪末
  • 在windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为: 1、Microsoft JET Data
  • 这里是一个基于GMap2和XML的小例子,数据存在XML文件中 ,这是最简单的模式,却相当地有用。实例的网址是: http://sunjia
  • 很简单,我们用两个文件就可以实现这一功能:login.htm<% @ Language=JavaScript&nb
  • 序言本文所提及的VTD-XML并非本文作者原创,作者只是对它进行介绍。问题通常当我们提起XML的使用时,最头痛的部分便是XML的verbos
  • QZONE平台的相册功能为保证加载速度一直以来以简洁的图片排列查看模式呈现相片,随着市场上各类相册产品推陈出新,用户越来越强烈的要求个人相册
  • 在FF下,如果内容含有FLASH,FLASH不会被隐藏掉,做为变通,我在收缩完成之后,将生成的内容容器隐藏掉了。<!DOCTYPE h
  • 当数据库服务器变得十分繁忙导致性能下降时,你会怎么办?购买更多的硬件升级你的服务器,还是重新考虑数据库服务器设计使得数据库平台具备良好的可升
手机版 网络编程 asp之家 www.aspxhome.com