oraclesql的执行计划如何查看 oraclesql的执行计划如何查看
如何检查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
文章评论