WEB开发网
开发学院数据库Oracle 在Oracle中启用AutoTrace查看SQL执行计划 阅读

在Oracle中启用AutoTrace查看SQL执行计划

 2008-09-04 12:50:30 来源:WEB开发网   
核心提示:通过以下方法可以把Autotrace的权限授予Everyone, 如果你需要限制Autotrace权限,在Oracle中启用AutoTrace查看SQL执行计划,可以把对public的授权改为对特定user的授权,D:oracleora92>sqlplus/nologSQL*Plus:Release9.2.0.1

通过以下方法可以把Autotrace的权限授予Everyone,

如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。 

D:oracleora92>sqlplus/nolog 
  SQL*Plus:Release9.2.0.1.0-Productionon星期二6月315:16:032003 
  Copyright(c)1982,2002,OracleCorporation.Allrightsreserved. 
SQL>connectsysassysdba

请输入口令:

已连接。

SQL>@?rdbmsadminutlxplan

表已创建。

SQL>createpublicsynonymplan_tableforplan_table;

同义词已创建。

SQL>grantallonplan_tabletopublic;

授权成功。  

SQL>@?sqlplusadminplustrce 
  SQL> 
  SQL>droproleplustrace; 
  droproleplustrace 
  *

ERROR 位于第 1 行:

ORA-01919: 角色’PLUSTRACE’不存在

SQL>createroleplustrace;

角色已创建

SQL> 
SQL>grantselectonv_$sesstattoplustrace;

授权成功。

SQL>grantselectonv_$statnametoplustrace;

授权成功。

SQL>grantselectonv_$sessiontoplustrace;

授权成功。

SQL>grantplustracetodbawithadminoption;

授权成功。

SQL> 
SQL>setechooff

DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public

这样所有用户都将拥有plustrace角色的权限.

SQL>grantplustracetopublic;

授权成功。

然后我们就可以使用AutoTrace的功能了.

SQL>connecteqsp/eqsp

已连接。

SQL>setautotraceon 
SQL>settimingon 
SQL>

关于Autotrace几个常用选项的说明:

SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式

SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告

SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息

SET AUTOTRACE ON ----------------- 包含执行计划和统计信息

SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出

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 
  SQL>

补充一下在10g中的用法

在10g中带有plan_table这张表,但是将名字改为了plan_table$

只需$ORACLE_HOME/sqlplus/admin/plustrce.sql创建plustrace角色

grant plustrace to public

Tags:Oracle 启用 AutoTrace

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接