Neil的備忘錄

          just do it
          posts - 66, comments - 8, trackbacks - 0, articles - 0

          如何啟用sqlplus的AutoTrace功能

          Posted on 2009-01-10 15:48 Neil's NoteBook 閱讀(362) 評論(0)  編輯  收藏

           AUTOTRACE是一項SQL*Plus功能,自動跟蹤為SQL語句生成一個執行計劃并且提供與該語句的處理有關的統計。

             SQL*Plus AUTOTRACE可以用來替代SQL Trace使用,AUTOTRACE的好處是您不必設置跟蹤文件的格式,并且它將自動為SQL語句顯示執行計劃。然而,AUTOTRACE分析和執行語句;而EXPLAIN PLAN僅分析語句。

             使用AUTOTRACE不會產生跟蹤文件。

           

          一、set autotrace語法及選項的說明

          1、用法:SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

          OPTION說明

          SET AUTOTRACE OFF          此為默認值,即關閉Autotrace

          SET AUTOTRACE ON            同時輸出執行結果以及統計信息和執行計劃信息。

          SET AUTOTRACE ON EXPLAIN   只打開執行計劃報表,顯示命令結果,不顯示統計信息。

          SET AUTOTRACE ON STATISTICS 只打開統計信息報表,顯示命令結果,不顯示執行計劃。

          SET AUTOTRACE TRACEONLY     不顯示命令的執行結果,顯示執行計劃和統計信息,但在traceonly的后面仍然可以追加explain或者statistics,等同于set autotrace on [explain|statistics]但是不顯示執行結果。

          2Autotrace執行計劃的各列的涵義

          ID_PLUS_EXP            每一步驟的行號

          PARENT_ID_PLUS_EXP     每一步的Parent的級別號

          PLAN_PLUS_EXP          實際的每步

          OBJECT_NODE_PLUS_EXP   Dblink或并行查詢時才會用到

          3AUTOTRACE Statistics常用列解釋

          db block gets      buffer cache中讀取的block的數量

          consistent gets    buffer cache中讀取的undo數據的block的數量

          physical reads      從磁盤讀取的block的數量

          redo sizeDML       生成的redo的大小

          sorts (memory)      在內存執行的排序量

          sorts (disk)        在磁盤上執行的排序量

           

          二、使用前設置及Autotrace授權

          1、任何以SQL*PLUS連接的session都可以用Autotrace,不過還是要做一些設置的,否則可能報錯。

          報錯示例:

          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

          該錯誤的的主要原因是由于當前用戶下沒有PLAN_TABLE這張表及相應的PLUSTRACE角色權限。

          2、 通過以下方法可以把Autotrace的權限授予Everyone,如果你需要限制Autotrace權限,可以把對public的授權改為對特定user的授權。

          D:\oracle\ora92>sqlplus /nolog

          SQL> connect sys as sysdba

          SQL> @?\rdbms\admin\utlxplan    --表已創建。

          SQL> create public synonym plan_table for plan_table;   --同義詞已創建。

          SQL> grant all on plan_table to public ;

          SQL> @?\sqlplus\admin\plustrce

          SQL> drop role plustrace;

          SQL> create role plustrace;

          SQL> grant select on v_$sesstat to plustrace;

          SQL> grant select on v_$statname to plustrace;

          SQL> grant select on v_$session to plustrace;

          SQL> grant plustrace to dba with admin option;

          SQL> set echo off

           

            DBA用戶首先被授予了plustrace角色,然后我們可以把plustrace授予public;這樣所有用戶都將擁有plustrace角色的權限.

          SQL> grant plustrace to public ;

           

          三、使用AutoTrace的功能

          SQL> connect eqsp/eqsp

          SQL> set autotrace on

          SQL> set timing on

          SQL> set autotrace traceonly

           

          SQL> select table_name from user_tables;

          已選擇98行。

          已用時間: 00: 00: 00.04

          Execution Plan

          ----------------------------------------------------------

          0 SELECT STATEMENT ptimizer=CHOOSE

          1 0 NESTED LOOPS

          2 1 NESTED LOOPS (OUTER)

          3 2 NESTED LOOPS (OUTER)

          4 3 NESTED LOOPS (OUTER)

          5 4 NESTED LOOPS (OUTER)

          6 5 NESTED LOOPS

          7 6 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'

          8 7 INDEX (RANGE SCAN) OF 'I_OBJ2' (UNIQUE)

          9 6 TABLE ACCESS (CLUSTER) OF 'TAB$'

          10 9 INDEX (UNIQUE SCAN) OF 'I_OBJ#' (NON-UNIQUE)

          11 5 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'

          12 11 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)

          13 4 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)

          14 3 TABLE ACCESS (CLUSTER) OF 'USER$'

          15 14 INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)

          16 2 TABLE ACCESS (CLUSTER) OF 'SEG$'

          17 16 INDEX (UNIQUE SCAN) OF 'I_FILE#_BLOCK#' (NON-UNIQUE)

          18 1 TABLE ACCESS (CLUSTER) OF 'TS$'

          19 18 INDEX (UNIQUE SCAN) OF 'I_TS#' (NON-UNIQUE)

           

          Statistics

          ----------------------------------------------------------

          0 recursive calls

          0 db block gets

          1389 consistent gets

          0 physical reads

          0 redo size

          2528 bytes sent via SQL*Net to client

          569 bytes received via SQL*Net from client

          8 SQL*Net roundtrips to/from client

          0 sorts (memory)

          0 sorts (disk)

          98 rows processed

           

          -The End-


          原文地址:http://space.itpub.net/12330444/viewspace-251837


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东山县| 泸西县| 老河口市| 上蔡县| 乐至县| 濉溪县| 泽普县| 泰兴市| 前郭尔| 萝北县| 栾川县| 工布江达县| 永济市| 阿拉善左旗| 韶关市| 博爱县| 尼木县| 古丈县| 自治县| 衡南县| 宁都县| 长春市| 安庆市| 岐山县| 黄冈市| 佳木斯市| 西乌珠穆沁旗| 星座| 泸州市| 耿马| 黄冈市| 佛坪县| 北宁市| 庆元县| 武鸣县| 邢台市| 杨浦区| 永新县| 衡南县| 宜城市| 咸丰县|