当前位置:北库历史网>风云人物>正文

oraclesql的执行计划如何查看 oraclesql的执行计划如何查看

导语:如何检查oraclesql的执行计划以下是边肖为大家收集和发布的书面材料。让我们快速看一下!1.通过开发工具1.直接进入文件->新建->解释计划窗口,在窗口中执行sql,查看计划结果。其中,成本表示cpu消耗的n%,基数表示执行的行数,相当于行数。2.首先执行从表a中选择*的解释计划,其中para a = 1,然后从表中选择*以查看oracle的执行计划。结果与1中的结果相同,因此建议

如何检查oraclesql的执行计划以下是边肖为大家收集和发布的书面材料。让我们快速看一下!

1.通过开发工具

1.直接进入文件->新建->解释计划窗口,在窗口中执行sql,查看计划结果。

其中,成本表示cpu消耗的n%,基数表示执行的行数,相当于行数。

2.首先执行从表a中选择*的解释计划,其中para a = 1,然后从表中选择*以查看oracle的执行计划。结果与1中的结果相同,因此建议在使用工具时使用1方法。

注意:在开发工具的命令窗口中不支持自动跟踪命令。

使用工具查看计划时也有不完整的信息,有时需要sqlplus的支持。

第二,通过sqlplus

1.最简单的方法

Sql >启用自动跟踪

Sql >从dual中选择*;

执行该语句后,将显示解释计划和统计信息。

这种语句的优点是缺点,所以在使用这种方法查看执行时间较长的sql语句时,需要等待语句成功执行后才能返回执行计划,大大增加了优化周期。

如果不想执行语句,只想得到执行计划,可以使用:

Sql >仅设置自动跟踪跟踪

这样只会列出执行计划,而不会实际执行语句,大大减少了优化时间。

虽然也列出了统计数据,但是因为语句没有执行,所以没有用。如果在执行语句时遇到错误,解决方法是:

以系统用户身份登录

Sqlplus > @?sqlplusadminplustrce.sql

Sqlplus >将plustrace授予user _ name

- user_name是上面提到的分析用户

2.使用解释计划命令

sqlplus >从testdb.myuser解释select *的计划

sqlplus >从表中选择*;

以上两种方法只能为这个会话中运行的语句生成一个执行计划,即我们需要知道哪个语句运行效率低,我们只是有目的地优化这个SQL语句。

其实很多情况下,我们只听到一个客户抱怨系统运行缓慢,却不知道是哪个SQL导致的。

此时,有许多现成的语句可以找到消耗更多资源的语句,例如:

选择地址,子字符串文本,缓冲区获取,执行,

buffer _ get/executions AVG FROM v $ sqlarea

其中执行> 0,缓冲区_获取> 100000,顺序为5;

地址文本缓冲区_获取执行AVG

- - - - -

66D83D64选择t.name,分别消耗的资源。

3.启用SQL_TRACE来跟踪所有后台进程活动:

全局参数设置:在中指定。OracleHome/admin/SID/pfile:SQL _ TRACE = true

当前会话中的设置:

SQL > alter session set SQL _ TRACE = true;

SQL >从dual中选择*;

SQL > alter session set SQL _ TRACE = false;

其他用户的跟踪设置:

SQL >从v $会话中选择sid、序列号、用户名,其中用户名= ' XXX

样本号序列号用户名

- - -

127 31923 A

128 54521 B

打开跟踪:SQL > execdbms _ system。set _ SQL _ trace _ in _ session

关闭跟踪:SQL > execdbms _ system。set _ SQL _ trace _ in _ session

然后使用oracle附带的tkprof命令行工具格式化跟踪文件。

4.使用10046事件查询:

10046事件级别:

lv1-启用标准的SQL_TRACE函数,相当于SQL_TRACE

lv4-1级+绑定值

lv8-1级+等待事件跟踪

lv12-1级+4级+8级

全局设置:

OracleHome/admin/SID/pfile指定:event = "10046永远跟踪名称上下文,级别12 "

当前会话设置:

打开:SQL >更改会话集事件' 10046永远跟踪名称上下文,级别8 ';

关闭:SQL >更改会话集事件' 10046跟踪名称上下文关闭';

为其他用户进行设置:

SQL >从v $会话中选择sid、序列号、用户名,其中用户名= ' XXX

样本号序列号用户名

- - -

127 31923 A

SQL > exec dbms _ system.set _ ev

5.用tkprof格式化跟踪文件:

通常,跟踪可以分为以下步骤:

1.定义要跟踪的目标范围,并使用适当的命令启用所需的跟踪。

2.一段时间后,停止跟踪。

此时,应该生成一个跟踪结果文件。

3.找到跟踪文件,格式化它,然后读取或分析它。

-使用SQL查找当前会话的跟踪文件:

SELECT d . value | | '/' | | lower)| | ' _ ora _ ' | | p . spid | | '。trc' trace_file_namefrom p,),I,d;-session select d . value of other users | | '/' | | lower()| ' _ ora _ ' | | p . spid | | '。TRC' trace _ file _ name from p,),I,d;

-搜索后使用tkprof命令,将TRACE文件格式化为d盘的explain_format.txt文件

SQL > $ tk prof d:/Oracle/admin/FZlgfm/udump/FZlgfm _ ora _ 3468 . TRC d:/explain _ format . txt

文件的内容大致如下

Tkprof:发布9 . 2 . 0 . 1 . 0-2010年4月20日星期二13:59:20生产

版权所有1982,2002,甲骨文公司。保留所有权利。

跟踪文件:d:/Oracle/admin/FZLGFM/udump/FZLGFM _ ora _ 3468 . TRC

排序选项:默认

********************************************************************************

count =执行OCI程序的次数

cpu = cpu执行时间(秒)

运行时间=运行的运行时间(秒)

disk =从磁盘物理读取缓冲区的次数

query =为一致读取获取的缓冲区数量

current =在当前模式下获得的缓冲区数量

rows =由提取或执行调用处理的行数* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

更改会话集事件' 10046永远跟踪名称上下文,级别8 '

调用计数cpu运行时间磁盘查询当前行

- - - - - - - -

解析0 0.00 0.00 0 0 0 0

执行1 0.00 0.00 0 0 0 0

获取0 0.00 0.00 0 0 0 0

- - - - - - - -

总计1 0.00 0.00 0 0 0 0

解析期间库缓存中的未命中:0

执行期间库缓存中的未命中:1

优化器目标:选择

正在解析用户id: SYS

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表北库历史网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
上一篇:丰绅殷德 和珅被抄家之后,儿子丰绅殷德为什么没受到牵连?下一篇:米脂三中 米脂三中事件,男子中学被虐待长大后砍杀中学生

文章评论