AUTOTRACE是360问答一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语请审景从火音问乎代七句的处理有关的统计。
SQL*PlusAUTOTRA味江景判为常即体候CE可以用来替代SQLTrace使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语句;而EXPLAINPLAN仅分析语句。
使用AUTOTRACE不会产生跟踪文件。
一、setautotrace语法及选项的说明
1、军呼精沉斗约味岩用法:SETAUTOT[RACE]{OFF|ON|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]
OPTION说明
SETAUTOTRACEOFF此为默认值,即关闭Autot外空座肉树主模医五白race
SETAUTOTRACEON同时输出执行结果以及统计信息和执行计划信息。
SETAUTOTRACEONEXPLAIN只打开执行计划报表,显示命令结果,不显示统计信息。
SETAUTOTRACEONSTATISTICS只打开统计信息报表,显示命令结果,不显示执行计划。
SETAUTOTRACETRACEONLY不显示命令的白能块双属执行结果,显示执行计划和统计信息,但在traceonly的后面仍然可以追加航映explain或者stat古错兵台游秋istics,等同于setautotraceon[explain|statistics]但是不显示执行结果。
2、Autotrace执行计划的各列的涵义
ID然功地始镇究派棉见_PLUS_EXP每一步骤的行号
PARENT_ID_PLUS_EXP每一步的Parent的级别号
PLAN_PLUS_EXP实际的每步
OBJECT_NOD制察乎能迅留基何翻E_PLUS_EXPDblin甚换倍他害周段k或并行查询时才会用到
3、AUTOTRACEStatistics常用列解释
dbblockgets从buffercache中读取的block的数量
consistentge次呼ts从buffercache中读取的undo数据的block的数量
physical跑跳接考德他位围响金reads从磁盘读取的block的数量
redosizeDML生成的redo的大小
sorts(memory)在内存执行的排序量
sorts(disk)在磁盘上执行的排序量
二、使用前设置及Autotrace授权
1、任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,蒸罪化输火否则可能报错。
报殖游服说错示例:
SQL:>setautotraceon;
SP2-0613:Un而急更强集门茶国护abletoverifyPL验划神陆肉屋赵AN_TABLEformatorexistence
SP2-0611:ErrorenablingEXPLAINreport
SP2-0618:CannotfindtheSessionId做波迫如煤商送顶entifier.CheckP称示缺剧划皮好略生侵LUSTRACEroleisenabled
SP2-0611:ErrorenablingSTATISTICSreport
该错误的的主要原因是由于当前用户下没有PLAN_TABLE这张表及相应的PLUSTRACE角色权限。
2、通过以下方法可以把Autotrace的权限授予Everyone,如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。
D:\oracle\ora92>sqlplus/nolog
SQL>connectsysassysdba
SQL>@?\rdbms\admin\utlxplan--表已创建。
SQL>createpublicsynonymplan_tableforplan_table;--同义词已创建。
SQL>grantallonplan_tabletopublic;
SQL>@?\sqlplus\admin\plustrce
SQL>droproleplustrace;
SQL>createroleplustrace;
SQL>grantselectonv_$sesstattoplustrace;
SQL>grantselectonv_$statnametoplustrace;
SQL>grantselectonv_$sessiontoplustrace;
SQL>grantplustracetodbawithadminoption;
SQL>setechooff
DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public;这样所有用户都将拥有plustrace角色的权限.
SQL>grantplustracetopublic;
三、使用AutoTrace的功能
SQL>connecteqsp/eqsp
SQL>setautotraceon
SQL>settimingon
SQL>setautotracetraceonly
SQL>selecttable_namefromuser_tables;
已选择98行。
已用时间:00:00:00.04
ExecutionPlan
----------------------------------------------------------
0SELECTSTATEMENTptimizer=CHOOSE
10NESTEDLOOPS
21NESTEDLOOPS(OUTER)
32NESTEDLOOPS(OUTER)
43NESTEDLOOPS(OUTER)
54NESTEDLOOPS(OUTER)
65NESTEDLOOPS
76TABLEACCESS(BYINDEXROWID)OF'OBJ$'
87INDEX(RANGESCAN)OF'I_OBJ2'(UNIQUE)
96TABLEACCESS(CLUSTER)OF'TAB$'
109INDEX(UNIQUESCAN)OF'I_OBJ#'(NON-UNIQUE)
115TABLEACCESS(BYINDEXROWID)OF'OBJ$'
1211INDEX(UNIQUESCAN)OF'I_OBJ1'(UNIQUE)
134INDEX(UNIQUESCAN)OF'I_OBJ1'(UNIQUE)
143TABLEACCESS(CLUSTER)OF'USER$'
1514INDEX(UNIQUESCAN)OF'I_USER#'(NON-UNIQUE)
162TABLEACCESS(CLUSTER)OF'SEG$'
1716INDEX(UNIQUESCAN)OF'I_FILE#_BLOCK#'(NON-UNIQUE)
181TABLEACCESS(CLUSTER)OF'TS$'
1918INDEX(UNIQUESCAN)OF'I_TS#'(NON-UNIQUE)
Statistics
----------------------------------------------------------
0recursivecalls
0dbblockgets
1389consistentgets
0physicalreads
0redosize
2528bytessentviaSQL*Nettoclient
569bytesreceivedviaSQL*Netfromclient
8SQL*Netroundtripsto/fromclient
0sorts(memory)
0sorts(disk)
98rowsprocessed
-TheEnd-
标签:sq,lplus,AutoTrace