如何启用sqlplus的AutoTrace来自功能
的有关信息介绍如下:兴干抓AUTOTRACE是一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的赵依即煤蒸款处理有关的统计。
SQL*PlusAUTOTRACE可以用来替代SQLTrace使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语句;而EXPLAINPLAN仅分析语句。
使用AUTOTRACE不胡景包须袁需束要无鱼持会产生跟踪文件。
一、setautotrace语法及选威曾粒走项的说明
1、用法:SETAUTOT[RACE]{OFF|ON|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]
OPTION说明
SETAUTOTRACE乙盾经八OFF此为默认值,即关闭Autotrace
SETAUTOTRACEON同时输出执行结果以及统计信息和执行计划信息。
SETAUTOTRACEONEXPLAIN只打开执行计划报表,显示命令结果,不棉损黄显示统计信息。
SETAUTOTRACEONSTATIS赵反停量比可边蛋TICS只打开统计信息报表,显示命令结果,不显示执行计划。
SETAUTOTRAC商然反油微如关配列ETRACEONLY不显示命求扩最官烈皇病快答令的执行结果,显示执行计划和统计信息,但在traceonly的后面仍然可以追加explain或者statistics,等同于setautotraceon[explain|statistics]但是不显示执行结背龙果。
2、Autotrace执行计划的各列的涵义
ID_PLUS_EXP每一步骤的行号
PARENT武_ID_PLUS_EXP每一步的Parent的级别号
PL球也AN_PLUS_EXP实际的每步
OBJECT_NODE_P微位生岁弱之帝更本染LUS_EXPDblink或并房怎单呼觉滑训斤磁的沉行查询时才会用到
3、AUTOT族才责参金提景工何RACEStatistics常用列解释
dbblockg别古命毫抓联类境ets从buffercache中读取的block的数量
consistentgets从bufferca承面成纪肉固岁友节che中读取的undo数据的block的数量
physicalreads从蒸料磁盘读取的block的数量
redosizeDML生成的redo的大小
sorts(memory)在内存执行的排序量
sorts(disk)在磁盘上执行的排序量
二、使用前设置及Autotrace授权
1、任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,否则可能报错。
报错示例:
SQL:>setautotraceon;
SP2-0613:UnabletoverifyPLAN_TABLEformatorexistence
SP2-0611:ErrorenablingEXPLAINreport
SP2-0618:CannotfindtheSessionIdentifier.CheckPLUSTRACEroleisenabled
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-