首页 > 其他分享 >set autotrace on

set autotrace on

时间:2024-04-02 17:56:58浏览次数:20  
标签:set autotrace Cost SQL DEPARTMENT Net sorts Card

在SQL*Plus中,你可以通过设置autotrace选项来在执行SQL命令的同时,自动的获得语句的执行计划和附加的统计信息。AUTOTRACE是一个很出色的Oracle SQL语句的诊断工具,与Explain plan不同的是这条SQL是实际执行了的,同时AUTOTRACE使用起来也极为方便。


一、启用Autotrace功能。
任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,否则可能报错。

1、报错示例:
SQL :> set autotrace on;
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report

2、解决方法:

a.以SYS用户运行plustrce.sql脚本

cd $ORACLE_HOME/sqlplus/admin

oracle>sqlplus \'/ as sysdba\';
SQL>@plustrce.sql

b.给任何想使用Autotrace的用户授PLUSTRACE权限。

SQL>grant plustrace to hr;

c.同时被授权的用户比如hr用户的PLAN_TABLE这个表必须存在。如果不存在这样:

cd $ORACLE_HOME/sqlplus/admin

oracle>sqlplus hr/hr; --hr为示例用户
SQL>@utlxplan.sql

二、设置Autotrace的命令。

序号 命令 解释
1 SET AUTOTRACE OFF 此为默认值,即关闭Autotrace
2 SET AUTOTRACE ON EXPLAIN 只显示执行计划
3 SET AUTOTRACE ON STATISTICS 只显示执行的统计信息
4 SET AUTOTRACE ON 包含2,3两项内容
5 SET AUTOTRACE TRACEONLY 与ON相似,但不显示语句的执行结果。

三、Autotrace执行计划的各列的涵义

序号 列名 解释
1 ID_PLUS_EXP 每一步骤的行号
2 PARENT_ID_PLUS_EXP 每一步的Parent的级别号
3 PLAN_PLUS_EXP 实际的每步
4 OBJECT_NODE_PLUS_EXP Dblink或并行查询时才会用到

四、AUTOTRACE Statistics常用列解释

序号 统计列 解释
1 db block gets 从buffer cache中读取的block的数量
2 consistent gets 从buffer cache中读取的undo数据的block的数量
3 physical reads 从磁盘读取的block的数量
4 redo size DML生成的redo的大小
5 sorts (memory) 在内存执行的排序量
7 sorts (disk) 在磁盘上执行的排序量

五、示例

oracle@yang:~> sqlplus hr/hr

SQL*Plus: Release 9.2.0.4.0 - Production on Wed Apr 12 15:46:56 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL>set autotrace on;

SQL> select b.DEPARTMENT_NAME,sum(a.SALARY)
2 from employees a,departments b
3 where a.DEPARTMENT_ID=b.DEPARTMENT_ID
4 group by b.DEPARTMENT_NAME
5 /

DEPARTMENT_NAME SUM(A.SALARY)
------------------------------ -------------
Accounting 20300
Administration 4400
Executive 58000
Finance 51600
Human Resources 6500
IT 28800
Marketing 19000
Public Relations 10000
Purchasing 24900
Sales 304500
Shipping 156400

11 rows selected.

Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
42 consistent gets
0 physical reads
0 redo size
678 bytes sent via SQL*Net to client
498 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed

SQL> set autotrace on
SQL> /

DEPARTMENT_NAME SUM(A.SALARY)
------------------------------ -------------
Accounting 20300
Administration 4400
Executive 58000
Finance 51600
Human Resources 6500
IT 28800
Marketing 19000
Public Relations 10000
Purchasing 24900
Sales 304500
Shipping 156400

11 rows selected.

Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=25 Card=27 Bytes=621
)

1 0 SORT (GROUP BY) (Cost=25 Card=27 Bytes=621)
2 1 HASH JOIN (Cost=21 Card=106 Bytes=2438)
3 2 TABLE ACCESS (FULL) OF \'DEPARTMENTS\' (Cost=10 Card=27
Bytes=432)

4 2 TABLE ACCESS (FULL) OF \'EMPLOYEES\' (Cost=10 Card=107 B
ytes=749)


Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
42 consistent gets
0 physical reads
0 redo size
678 bytes sent via SQL*Net to client
498 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed

SQL> edit
Wrote file afiedt.buf

1 select b.DEPARTMENT_NAME,sum(a.SALARY)
2 from employees a,departments b
3 where a.DEPARTMENT_ID=b.DEPARTMENT_ID
4* group by b.DEPARTMENT_NAME
SQL> /

DEPARTMENT_NAME SUM(A.SALARY)
------------------------------ -------------
Accounting 20300
Administration 4400
Executive 58000
Finance 51600
Human Resources 6500
IT 28800
Marketing 19000
Public Relations 10000
Purchasing 24900
Sales 304500
Shipping 156400

11 rows selected.

Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=25 Card=27 Bytes=621
)

1 0 SORT (GROUP BY) (Cost=25 Card=27 Bytes=621)
2 1 HASH JOIN (Cost=21 Card=106 Bytes=2438)
3 2 TABLE ACCESS (FULL) OF \'DEPARTMENTS\' (Cost=10 Card=27
Bytes=432)

4 2 TABLE ACCESS (FULL) OF \'EMPLOYEES\' (Cost=10 Card=107 B
ytes=749)


Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
42 consistent gets
0 physical reads
0 redo size
678 bytes sent via SQL*Net to client
498 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/fuqianglovejava/article/details/84373164

标签:set,autotrace,Cost,SQL,DEPARTMENT,Net,sorts,Card
From: https://www.cnblogs.com/ivenlin/p/18111162

相关文章

  • IOS开发使用Xcode上传构建版本报错 Distribution failed with errors:Asset validatio
    报错信息:SDKversionissue.ThisappwasbuiltwiththeiOS16.0SDK.AlliOSandiPadOSappsmustbebuiltwiththeiOS16.1SDKorlater,includedinXcode14.1orlater,inordertobeuploadedtoAppStoreConnectorsubmittedfordistribution.Startin......
  • AssetBundle在移动设备上丢失
    1)AssetBundle在移动设备上丢失2)Unity云渲染插件RenderStreaming,如何实现多用户分别有独立的操作3)如何在圆柱体类型的地图中编程玩家的输入4)Mixamo动画的根运动问题这是第380篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地......
  • set的一些用法和问题
    文章目录set可以存取重复元素吗`HashSet`去除重复元素的具体原理是什么?set集合平常用在什么地方在多线程环境中如何正确使用Set集合?如何使用TreeSet进行排序set可以存取重复元素吗Set接口的实现类,如HashSet、TreeSet、LinkedHashSet等,通常不允许重复元素。当尝试向S......
  • 【python】字典(Dictionary)与集合(Set)
    字典是一种键值对的数据结构,而集合是一种无序、元素不重复的数据结构。目录前言正文一、字典(dict)    1、字典的定义    注意:        2、字典的查询    2.1语法:字典名['键名']    2.2语法:字典名.get('键名')   ......
  • 3. dataset、dataloader
    dataset数据集dataloader数据加载器1.AI训练时的需求有一个数据集文件来,里面有100w的样本和标签训练时,通常希望,一次在100w中随机抓取batch个样本,拿去训练如果全部抓取完毕,则重新打乱后,再来一次2.dataset,数据集作用:储存数据集的信息self.xxx获取数据集长度__len_......
  • 记录一次使用unordered_set插入数据异常的问题
    问题描述问题和unordered_set有关,相关代码如下://打印unordered_set的所有值voidprintSet(conststd::unordered_set<std::string>&data){intindex=0;autoit=data.begin();for(;it!=data.end();++it){conststd::string&key=*i......
  • setuptools 对于现代python包支持的简单试用
    以前我们编写python包通过setuptools是编写配置setup.cfg以及一个setup.py文件,现代的玩法是基于pyproject.toml以下是一个简单学习项目准备使用venvclipython-mvenvvenvsourcevenv/bin/activate创建项目文件pyproject.toml,里边包含了build......
  • Set集合
    1、set的定义Set,不允许出现重复元素,并且无序的集合,主要有HashSet实现类在判断重复元素的时候,Set集合会调用HashCode()和equal()方法来实现。注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素用于存储(存入无序和取出的顺序不一定相同)元素,值......
  • Babylon 如何使用AssetsManager(),导入多个模型
    AssetsManager是Babylon.js资产管理工具,可以加载多个模型或者纹理,并且在任务完成时提供回调函数。例如://创建一个AssetsManager实例constassetsManager=newBABYLON.AssetsManager(scene);//添加纹理加载任务consttextureTask=assetsManager.addTexture......
  • clean maven工程报错: Cannot find JRE '1.8 (1)'. You can specify JRE to run maven
    在双击Maven的clean时,报错:CannotfindJRE'1.8(1)'.YoucanspecifyJREtorunmavengoalsinSettings原因可能是自己之前下载的是JDK17,并且IDEA认为该JDK为默认JDK,而我的Maven项目设置使用的是JDK8,因此报错。解决方案如下:点击File-settingBuild,Execution,Deploy......