天天看點

啟用 AUTOTRACE 功能

--=======================

-- 啟用 AUTOTRACE 功能

    AUTOTRACE是一個SQL*Plus工具,用于跟蹤SQL的執行計劃,收集執行時所耗用資源的統計資訊,是SQL優化工具之一,下面給出啟用

AUTOTRACE 功能步驟。

一、建立基礎表

    運作$ORACLE_HOME/rdbms/admin/utlxplan腳本來建立plan_table

    scott@ORCL> conn system/redhat   --使用system帳戶登陸

    Connected.

    system@ORCL> start $ORACLE_HOME/rdbms/admin/utlxplan  --執行utlxplan腳本

    Table created.

    system@ORCL> create public synonym plan_table for plan_table;  --為表plan_table建立公共同義詞

    Synonym created.

    system@ORCL> grant all on plan_table to public;   --将同義詞表plan_table授予給所有使用者

    Grant succeeded.

二、建立角色

    運作$ORACLE_HOME/sqlplus/admin/plustrce.sql腳本

    system@ORCL> conn / as sysdba   --使用sysdba帳戶登陸

    onnected.

    sys@ORCL> start $ORACLE_HOME/sqlplus/admin/plustrce.sql   --執行建立角色的腳本

        sys@ORCL>

        sys@ORCL> drop role plustrace;

        drop role plustrace

                  *

        ERROR at line 1:

        ORA-01919: role 'PLUSTRACE' does not exist

        sys@ORCL> create role plustrace;

        Role created.

        sys@ORCL> grant select on v_$sesstat to plustrace;

        Grant succeeded.

        sys@ORCL> grant select on v_$statname to plustrace;

        sys@ORCL> grant select on v_$mystat to plustrace;

        sys@ORCL> grant plustrace to dba with admin option;

三、角色的授予

    在建立角色後,DBA首先被授予了該角色,且可以将角色授予其它組和使用者。可以手工把plustrace授予給public,

    則該資料庫内所有的使用者都将擁有plustrace角色的權限。也可以單獨授予給某個組和使用者

        授予給所有使用者

            sys@ORCL> grant plustrace to public;

        授予給單獨使用者

            sys@ORCL> grant plustrace to scott;

    完成上述設定之後即可使用autotrace 功能

四、AUTOTRACE的幾個選項

        在sql提示符下輸入set autot後将會給出設定autotrace的提示,如下

        scott@ORCL> set autot

        Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

        set autotrace off :預設值,将不生成autotrace 報告

        set autotrace on :包含執行計劃和統計資訊

        set autotrace traceonly :等同于set autotrace on,但不顯示查詢輸出的結果

        set autotrace on explain :隻顯示優化器執行路徑報告

        set autotrace on statistics :隻顯示執行統計資訊

        scott@ORCL> set autotrace on;

        scott@ORCL> select * from emp where ename='SCOTT';

             EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

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

              7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20

        Execution Plan

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

        Plan hash value: 3956160932

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

        | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

        |   0 | SELECT STATEMENT  |      |     1 |    37 |     3   (0)| 00:00:01 |

        |*  1 |  TABLE ACCESS FULL| EMP  |     1 |    37 |     3   (0)| 00:00:01 |

        Predicate Information (identified by operation id):

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

           1 - filter("ENAME"='SCOTT')

        Statistics

                  0  recursive calls

                  0  db block gets

                  8  consistent gets

                  0  physical reads

                  0  redo size

                824  bytes sent via SQL*Net to client

                385  bytes received via SQL*Net from client

                  2  SQL*Net roundtrips to/from client

                  0  sorts (memory)

                  0  sorts (disk)

                  1  rows processed    

五、更多參考

<a href="http://blog.csdn.net/robinson_0612/archive/2010/08/05/5791597.aspx">Oracle 冷備份</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/07/29/5774795.aspx">SPFILE錯誤導緻資料庫無法啟動</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/06/23/5688875.aspx">Oracle 使用者、對象權限、系統權限</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/06/23/5688997.aspx">Oracle 角色、配置檔案</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/08/03/5784713.aspx">Oracle 歸檔日志</a>