当前位置:首页 > 日记 > 正文

Oracle数据库查看执行计划的方式

Oracle数据库查看执行计划的方式
一、什么是执行计划(解释计划)

执行计划:Oracle中查询语句的执行过程或访问路径的描述。

两。如何查看执行计划

1:查看F5下的SQL执行计划、第三方工具、蟾蜍等。

很多人都认为,PL的SQL执行计划只能看到基本信息,如基数、优化器、消费等等。事实上,这可以在PL/sql工具中设置,您可以看到许多其他信息,如下所示
2:在sql * Plus中执行以下步骤(在命令窗口中,在SQL SQL窗口中)

复制代码代码如下所示:
解释计划
SELECT * FROM SCOTT.EMP;- SQL脚本解析
SQL SELECT * FROM表>>(dbms_xplan。显示);
3:在SQL +下面执行以下命令(一些命令无效):

复制代码代码如下所示:
设置控制显示执行时间统计
SQL > SET AUTOTRACE ON解释这样的设置包括执行计划、脚本的数据输出,没有统计信息
sql执行需要查看执行计划的SQL语句。
SQL >设置AUTOTRACE --没有产生AUTOTRACE的报告,这是默认模式
SQL > SET AUTOTRACE ON -这样的设置包括执行计划、统计信息、数据和脚本的输出
sql执行需要查看执行计划的SQL语句。
SQL >设置AUTOTRACE关闭
SQL >设置AUTOTRACE痕迹-此设置将有执行计划,统计,和无脚本的数据输出
sql执行需要查看执行计划的SQL语句。
SQL >设置AUTOTRACE痕迹统计--这个设置只包含统计信息
sql执行需要查看执行计划的SQL语句。
autot { } {比赛设置了{唯一} } {口痕迹{ } { } {等在统计| | } }

参考文献:sqlplus用户指南和参考版本11.1
注:PL / SQL开发工具不完全支持所有SQL*Plus命令,如SET AUTOTRACE ON,那么它将PL / SQL开发工具下执行此命令错误。

SQL > SET AUTOTRACE ON;

不能设置AUTOTRACE

4:sql_trace可以启用全球作为一个参数,也可以在一个特定的会话形式的命令的形式使

4.1在全球在参数文件启用(pfile / SPFILE)在sql_trace =真正的指定,在全球sql_trace启用会导致之后所有的活动过程中,包括用户进程的背景和过程,往往会导致严重的性能退化,在生产环境中,谨慎使用。

提示:通过使sql_trace在全球范围内,我们可以跟踪所有后台进程的活动,以及许多抽象的描述文件。通过跟踪文件的实时变化,我们可以清楚地看到进程之间的紧密协调。

4.2,在当前的会话级设置中,通过跟踪当前进程,可以发现当前操作的后台数据库的递归操作(在研究数据库的新特性时特别有效),并在研究SQL执行时找出背景。

错误代码等:
SQL >改变会话设置sql_trace =真;
SQL> select * from SCOTT.EMP;
SQL >改变会话设置sql_trace = false;

那么,您如何看待此时的相关信息呢无论您在SQL + +或SQL开发人员中执行上面的脚本,在这之后您都看不到任何信息。可以通过以下脚本查询跟踪日志信息。
复制代码代码如下所示:
选择t.value | || |低(RTrim(i.instance,CHR(0))'_ora_| | | |)
p.spid'。trc'trace_file_name | |

(选择p.spid
从V mystat美元M,V $ SESSION,v$进程P
在m.statistic # = 1
和s.sid = m.sid
和p.addr = s.paddr
P),
(选择t.instance
从v $ t,v参数v
在v.name = 'thread
和(v.value = 0或t.thread # = to_number(v.value))
我),
(选择值的V参数name = 'user_dump_dest美元不)
tkprof的帮助信息如下:复制代码代码如下:
tkprof选项
选项说明
跟踪文件的跟踪输出文件的名称
输出文件的文件名已经建立
排序选项的顺序
打印前n语句
使用指定的用户名运行解释计划
文件名生成一个INSERT语句
sys =忽略作为用户系统运行的递归SQL语句
合计= { Y | n}不收取同样的如果没有指定tkprof骨料
SQL文本的多个用户
记录文件在跟踪文件中找到的语句
表= schema.tablename提出执行计划到一个指定的表而不是默认的plan_table

您可以键入tkprof在操作系统会列出所有可用的选项和输出
注释排序选项有

排序选项描述
对prscnt execnt fchcnt调用的数量分析的执行时间
从提取的CPU时间执行prscpu execpu fchcpu分析
prsela exela fchela分析以提取时间
对磁盘的数量prsdsk exedsk fchdsk读取分析提取的执行期间
对用于连续阅读提取的执行过程中的缓冲区的数目prsqry exeqry fchqry分析
对提取的执行过程中读取当前使用的缓冲区数prscu执行fchcu分析
高速缓存的数量prsmis exemis分析思念在图书馆在执行
在执行过程中对处理的行数exerow fchrow分析
对于一个光标分析用户用户名的用户ID

tkprof统计
执行调用号码
CPU使用的秒数:CPU
走过的总时间:去
磁盘:物理读取时间
查询的逻辑读取数:连续读取
当前当前模式中逻辑读取的数量:
行:已处理行号
tkprof统计信息
统计意义
语句的计数分析或执行语句的数目和提取调用的数目。
如果在0分析阶段的共享池中找到CPU中每个阶段的处理时间,则为秒。
以秒计算的占用时间通常不是很有用,因为其他进程影响占用时间。
如果数据被缓冲,从数据库文件读取的物理数据块可能非常低。
连续读取和检索查询的逻辑缓冲区通常用于SELECT语句。
当前检索当前模式通常用于DML语句的逻辑缓冲区
由行外部声明显示,SELECT语句的语句显示在DML语句的执行阶段,在执行阶段显示处理线

查询和当前的总数是访问的逻辑缓冲区的总数。

执行以下命令:tkprof D:甲骨文产品 10.2.0 db_1 RDBMS微量/ wgods_ora_3940.trc H: out.txtoutputfile解释= / ETL ETL
执行上述命令后,您可以查看生成的文本文件。
复制代码代码如下所示:
tkprof:释放10.2.0.1.0生产在5月23日星期三16:56:41 2012
版权(c)1982, 2005,甲骨文。版权所有。
跟踪文件:D:甲骨文产品 10.2.0 db_1 RDBMS微量/ wgods_ora_3940.trc
排序选项:默认
********************************************************************************
次OCI程序数=数被处决
执行时的CPU时间
以秒为单位执行时间
磁盘=磁盘中物理缓冲区的读取次数
查询=一致读取得到的缓冲区的个数
当前=在当前模式下获取的缓冲区的数目(通常用于更新)
行=取或执行调用处理的行数。
********************************************************************************
改变会话设置sql_trace =真
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析0 0
执行10 0
取0 0
-----------------------------------------------------------------------
合计10 0
解析期间在库缓存中未命中:0
执行期间在库缓存中未命中:1
优化器模式:选择
解析用户ID:89(ETL)
********************************************************************************
开始:ID:= sys.dbms_transaction.local_transaction_id;结束;
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析20 0
执行20 0.000002
取0 0
-----------------------------------------------------------------------
合计40 0.000002
解析期间在库缓存中未命中:0
优化器模式:选择
解析用户ID:89(ETL)
********************************************************************************
*选择

scott.emp
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析20 0
执行10 0
取10 0.0007014
-----------------------------------------------------------------------
合计40 0.0007014
解析期间在库缓存中未命中:1
优化器模式:选择
解析用户ID:89(ETL)
行的执行计划
----------------------------------------------------------
选择语句模式:选择
表访问方式:分析(全)of'emp(表)
********************************************************************************
改变会话设置sql_trace = false
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析10 0
执行10 0
取0 0
-----------------------------------------------------------------------
合计20 0
解析期间在库缓存中未命中:1
优化器模式:选择
解析用户ID:89(ETL)
********************************************************************************
对于所有的非递推报表总数
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析50 0
Execute 50 0.000002
取10 0.0007014
-----------------------------------------------------------------------
合计110 0.0007016
解析期间在库缓存中未命中:2
执行期间在库缓存中未命中:1
所有递归语句的总计
调用计数CPU经过的磁盘查询当前行
-----------------------------------------------------------------------
解析0 0
执行0 0
取0 0
-----------------------------------------------------------------------
合计0 0
解析期间在库缓存中未命中:0
会话中的用户SQL语句。
会话中的内部sql语句。
会话中的sql语句。
本次会议解释的发言。
********************************************************************************
跟踪文件:D:甲骨文产品 10.2.0 db_1 RDBMS微量/ wgods_ora_3940.trc
跟踪文件的兼容性:10.01.00
排序选项:默认
会话跟踪文件。
跟踪文件中的用户SQL语句。
跟踪文件中的内部SQL语句。
跟踪文件中的SQL语句。
跟踪文件中唯一的SQL语句。
使用模式解释sql语句:
ETL教授plan_table美元。
使用默认表。
创建了表。
桌子掉了。
跟踪文件中的行。
跟踪文件中的秒数。

4.3,我们跟踪其他用户的进程。在许多情况下,我们需要跟踪其他用户的进程,而不是Oracle可以提供的当前用户。
dbms_system.set_sql_trace_in_session做。
例如:
复制代码代码如下所示:
选择SID,串行#,V $ SESSION么= 'etl的用户名
执行dbms_system.set_sql_trace_in_session(61,76,真的);
执行dbms_system.set_sql_trace_in_session(61,76,假);

5使用10046事件
复制代码代码如下所示:
改变会话设置tracefile_identifier = 10046;
改变会话设置事件= '10046道意,8级;
SELECT * FROM SCOTT.EMP;
改变会话设置事件= '10046微量命名上下文;
然后您可以使用脚本查看跟踪文件的位置。
选择t.value | || |低(RTrim(i.instance,CHR(0))'_ora_| | | |)
p.spid'。trc'trace_file_name | |

(选择p.spid
从V mystat美元M,V $ SESSION,v$进程P
在m.statistic # = 1
和s.sid = m.sid
和p.addr = s.paddr
P),
(选择t.instance
从v $ t,v参数v
在v.name = 'thread
和(v.value = 0或t.thread # = to_number(v.value))
我),
(选择值的V参数name = 'user_dump_dest美元不)
查询结果wgods_ora_28279.trc文件,但没有相应的跟踪文件,在相应的目录中找到,但下面的跟踪文件: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。执行顺序

该原则的执行顺序是:从上到下,从左到右。

自上而下:在计划的实施中一般包含多个节点,同一级(或并行)节点上的优先级由

在一个节点中,从右到左有多个子节点,开始执行子节点。

当然,您也可以通过它提供的功能来查看工具中的执行顺序:

2现场口译。执行计划

SQL >
名词解释:
递归调用递归调用
DB块数块读取缓冲区高速缓存块在当前请求的数量,电流模块的数量在运行就正常,但不一致读的情况下产生的,一个查询块是在查询的时间点在数据库查询中,当前块的现有的数据块,在这个时候,而不是之前或之后的数据块的个数这一次。
数据量的数据的一致性撤消一致得到在缓冲区中的回滚段的总请求数块缓冲区高速缓存读取所需的数据块的读,这里的概念是在您的处置当你需要阅读本操作状态对一致性处理多块,这些块的主要原因是因为你在查询过程中,由于操作的数据块的其他会议,和查询块已被修改,但因为我们的查询调用这些修改之前,一块在图像查询数据回滚段的需要,为了保证数据的一致性,这导致了一个一致的阅读。

物理读的物理读取是从磁盘读取的数据块的数量:
1:数据库缓存中不存在这些块。
2:全表扫描
3:磁盘分类
在重做的重做日志大小DML产生的大小
内存执行中的排序(内存)量
磁盘上执行排序(磁盘)的数量。
2091个字节通过网络发送给客户机,从SQL *网络发送2091字节的数据给客户机。
通过客户端客户端接收的416个字节发送416字节的数据到SQL *网络。
参考文献:sqlplus用户指南和参考版本11.1
DB块三个元素之间的关系、一致性获取和物理读取可以概括如下:逻辑读取指的是Oracle从内存中读取的数据块的数量,一般来说:
一致得到db块得到。当内存中没有所需的数据块时,可以从磁盘获得,然后生成物理读。
三.具体内容观
1 >计划散列值
此行是该语句的哈希值。我们知道Oracle在共享池中执行每个Oracle语句的执行计划,首先通过硬解析生成哈希值,在下次执行时比较散列值,如果相同的是不执行硬解析。
2 >成本

成本没有一个单位,是一个相对值,当SQL以CBO的方式分析执行计划时,它提供了Oracle来评估CBO的成本并选择执行计划。没有明确的含义,但它在对比中是非常有用的。
公式:成本=(单块我 / O成本+多块我 / O成本+ CPU成本)/ sreadtim

3 >执行计划列字段的解释:
id:执行序列,但它不是执行序列。根据操作缩进(最正确的第一个和第一个执行原则)判断执行。在同一个层次上,如果一个操作没有子,id是第一个执行的。一般来说,根据缩进的长度,缩进的第一个执行是最大的。如果2行缩进,则先执行以上操作。)
操作:当前操作的内容。
名称:操作对象
行:即10g版本之前的基数(基数),Oracle估计当前操作的返回结果集行数。
字节:执行此步骤后返回的字节数。
成本(CPU):表示执行到该步骤的执行成本,用于说明SQL执行的成本。
时间:Oracle估计当前操作的时间。
4。谓语说明:
谓词信息(由操作ID标识):
离开
2过滤器()。经理不为空)
4 -访问(。编号=B。经理)
访问:表示谓词条件的值将影响数据的访问路径(全表扫描或索引)。
筛选器:谓词条件的值不影响数据的访问路径,只起过滤作用。
谓词中访问的主要注意事项是考虑谓词的条件以及访问路径是否正确使用。
5。动态分析
如果在实施计划中有以下提示:


-用于声明的动态采样
这表明用户CBO使用的当前技术要求用户在分析计划时考虑到这些因素。
这里有两种情况:
(1)如果没有分析该表,则CBO可以通过动态抽样获得分析数据,或者能够或正确地执行计划。
(2)如果分析表,但分析信息太旧,CBO将不会使用动态采样,而是使用这些旧的分析数据,这可能导致错误的执行计划。

四、表访问模式

1全表扫描(FTS)全表扫描

2、索引查找索引扫描
索引查找有5种方法:
索引唯一扫描——索引唯一扫描
找到一个数值,通过一个独特的指标经常返回一个rowid。如果有唯一或主键约束,保证语句只访问一行,Oracle
独特的扫描规则
通过一个唯一的a查找一个键值的方法,也称为对错。
指数范围扫描-指数局部扫描
索引范围扫描是访问特定列的范围值的方法。至少必须提供索引的前导列以通过索引访问数据。可用于范围操作(例如。
使用索引来访问数据的多个行,通常使用索引范围扫描的唯一指标是谓语(约束)中使用的运算符号的范围(如> > < =,=,拼接)
索引全扫描-索引全局扫描
全索引扫描只能在CBO中获得,否则我们无法确定是否完整扫描是一个好主意。我们选择索引完全扫描时,我们有统计表明,它将是更有效的比一个完整的表扫描和排序。例如,当我们对索引进行无限扫描时,我们可以做一个完整的索引扫描,并希望索引中的数据有序。
索引快速全扫描-索引快速全局扫描,经常发生没有顺序的
扫描所有的块索引,行不在排序顺序返回v733_plans_enabled =真正需要介绍7.3和CBO,可能暗示使用index_ffs提示,使用多块我 / O,可以并行执行,可以用来访问第二列因为连接索引。这是我们选择的所有索引。
索引跳过扫描-索引跳转扫描,其中条件列通常没有索引。
索引跳过扫描查找行,即使列不是
3。ROWID物理ID扫描
这是最快的访问方法。Oracle检索指定的块,第一次扫描是访问数据的最快方式。

相关文章

Oracle添加用户权限,修改密码,解锁,删

Oracle添加用户权限,修改密码,解锁,删

用户权限,修改密码,删除用户,解锁,方法,添加用户(创建用户,自动生成与用户同名的模式) 创建用户仪简介默认经仪默认为数据的临时。 授权(老实说,这些权限是开发中使用的权限,如果用户生成环境,请为用户创建适当的系统权限)。 有人说,在生产环境中,它…

Oracle11gDataGuard参数详解

Oracle11gDataGuard参数详解

参数详解,电脑软件,Oracle11gDataGuard,注:本文是从Oracle Data Guard11g手册78页- 88页翻译 在数据保护(稍后在DG中编写)的情况下,我们只关注以下三个参数: 1。独立于数据库角色的参数 2。当数据库的作用是主要的参数时 三.数据库的角色处…

关于投诉基本信息的常见问题

关于投诉基本信息的常见问题

常见问题,投诉,基本信息,电脑软件,1、投诉的基本信息如何填写投诉的详细地址 答:投诉的基本信息;填写详细地址的详细地址。 2,投诉的基本信息;你需要填写我自己的真实姓名,地址和身份证号码吗 答:为了帮助您找到QQ号码,请尽量提供您的真实姓名、…

什么保密卡的情况下会失败,故障后,我

什么保密卡的情况下会失败,故障后,我

故障,保密,情况下,电脑软件,以下安全卡将过期: 有了1张,QQ卡上打印的最新的物理卡被首次使用,并且没有绑定到任何过期的帐号; 2、电子安全卡、闪存卡、手机版的保密保密卡在收到后7天内,不得绑定任何账户;(电子卡已于2011年8月3日下午停止接收)。…

PS图象处理软件常用快捷键

PS图象处理软件常用快捷键

常用快捷键,图象,处理软件,电脑软件,PS,核心提示:工具箱(多种工具共用一个快捷方式也可以按{这个快捷选择移})矩形和椭圆选框工具刀具{米} { } { } C V,套索工具移动多边形套索、磁性套索魔棒{我} {白}喷枪工具… Toolboxes(多种工具共用一个快…

注册表是什么reg.exe-使用

注册表是什么reg.exe-使用

注册表,电脑软件,reg,exe,评论:对reg.exe -详细说明注册过程 进程文件:注册或reg.exe 过程名称:注册表控制台工具 过程类别:安全风险的过程 英文描述: reg.exe是一个过程,属于微软的注册表控制台工具,注册表,它也被称为后。 中文参考: 对不起,暂时…

如何关闭Win8或Win8.1系统程序兼容

如何关闭Win8或Win8.1系统程序兼容

系统程序,兼容性,助手,功能,电脑软件,点评:本文介绍了两种关闭程序兼容性辅助功能的方法,一种是通过系统服务设置,另一种是通过组策略设置实现的,这两种方法非常简单,两种选择解决了这个问题。 我们都知道,从一开始的Vista,微软推出了一个程序兼容…

neocapture是neocapture.exe-使用

neocapture是neocapture.exe-使用

电脑软件,neocapture,exe,点评:neocapture.exe是neoDVD录音软件相关程序,用于记录和备份您最喜爱的镜子或权力的DVD 进程文件:neocapture或neocapture.exe 进程名称:NeoDVD Module 过程类别:安全风险的过程 英文描述: neocapture.exe是一个过程…

PS图象处理软件#160;常见技巧

PS图象处理软件#160;常见技巧

图象,处理软件,常见,技巧,电脑软件,核心提示:F1帮助F2 F3 F4切-复制-粘贴,F5隐藏/显示,刷面板F6隐藏/显示、彩色面板F7-隐藏/显示图层面板,F8,隐藏/显示信息面板… F1帮助 F2 -剪切 F3 -复制 F4粘贴 F5 -隐藏/显示画笔面板 F6 -隐藏/显示颜色面…

对wingate.exe-Wingate是什么

对wingate.exe-Wingate是什么

电脑软件,wingate,exe,Wingate,Review: wingate.exe - Wingate process 进程文件:Wingate或wingate.exe 进程名称:Lovgate。G病毒 过程类别:安全风险的过程 英文描述: wingate.exe加入系统由于Lovgate G病毒的。此蠕虫包含大量邮件和后门功能…

该doscan.exe过程的作用是什么dosc

该doscan.exe过程的作用是什么dosc

危险,作用,过程,电脑软件,doscan,评论:详细描述了doscan doscan.exe -过程 进程文件:doscan或doscan.exe 进程名称:赛门铁克防病毒企业扫描过程 过程类别:安全风险的过程 英文描述: Doscan.exe是一个过程,属于赛门铁克防病毒企业版,企业,它也被称…

对scanexplicit.exe-scanexplicit

对scanexplicit.exe-scanexplicit

作用,电脑软件,scanexplicit,exe,点评:scanexplicit.exe是诺顿网络安全套装相关程序,用于存储文件到隔离区 进程文件:scanexplicit或scanexplicit.exe 过程名称:资产净值赛门铁克检疫扫描器 过程类别:安全风险的过程 英文描述: scanexplicit.ex…