如何启用sqlplus的AutoTrac见极e功能
的有关信息介绍如下:AUTOTRACE是一项S钢老孔题征倍破好QL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的处理有关的统计。
SQL*PlusAUTOTRACE可以用来替代SQLT六灯文员山息race使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语句;而EXPLAINPLAN仅分析语五哥用食妒测养句。
使用AUTOTRAC感刻及旧朝感投院答应序E不会产生跟踪文件。
一、setautotrace语法及选项的说明
1、用法:SETAUTOT[RACE]{OFF|ON|TRACE[ONLY]}[EXP素声音静帝首盾[LAIN]][STAT面破流扩病处[ISTICS]]
OPT么础编远最飞吸格波压概ION说明
SETAUTOTRACEOFF此为默认值,即关闭Autotrace
SETAUTOTRACEON迅低氧娘斤亚识项刚感迅同时输出执行结果以及统计信息和执行计划信息。
SETAUTOTRACEONEXPLA庆两听方谁计五丝IN只打开执行计划报表,显示命令结果,不显示统计信息。
SETAUTOTR气鱼ACEONSTATISTICS只打开统计信息报表,显示命令结果,不显示执行计划。
SETAUTOTRACETRACEONLY不显示命令的执行结果,显示执行计划和统计信息,但在traceonly的后面仍然可以追加explain或者statistics,等同于setautotraceon[explain|statistics]但是不显示执行结果。
2、Autotrace执行计划的各列的涵义
ID_PLUS_EXP每一步骤的行号
PARENT_ID_PLUS_EXP每一步的Parent的级别号
PLAN_PLUS_EXP实际的每步
OBJECT_NODE_PLUS_EXPDblink或并行查询时才会用到
3、AUTOTRACEStatistics常用列解释
dbblockgets从buffercache中读师误后封妒货的考几沉取的block的数量
consi怕问流化非发stentgets从buffercache中读取的undo数据的block的数量
physicalreads从磁盘读取的block的数量
redosizeDML生成的redo的大小
sorts(memory费反朝的)在内存执行的排序量
sorts(disk)在磁盘上执行的排安项妈击征序量
二、使用前设置及会与便吗几露去议临坏Autotrace授权
1、任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,否则可能报错。
报错英背责绝千阿自音突示例:
SQL:>setautotraceon;
SP2-0613:UnabletoverifyPLAN_TABL应精坏高然烧命那原读Eformatorexistence
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-