熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

在Oracle中啟用AutoTrace查看SQL執行計劃

2013-11-13 22:11:23  來源: Oracle 

  通過以下方法可以把Autotrace的權限授予Everyone

  如果你需要限制Autotrace權限可以把對public的授權改為對特定user的授權 

   D:\oracle\ora>sqlplus /nolog
  SQL*Plus: Release   Production on 星期二 月  :: 
  Copyright (c)   Oracle Corporation All rights reserved
SQL> connect sys as sysdba

  請輸入口令:

  已連接

   SQL> [b]@?\rdbms\admin\utlxplan[/b]

  表已創建

   SQL> create public synonym plan_table for plan_table;

  同義詞已創建

   SQL> grant all on plan_table to public ;

  授權成功

         SQL>[b] @?\sqlplus\admin\plustrce[/b]
  SQL>
  SQL> drop role plustrace;
  drop role plustrace
  *

  ERROR 位於第 行:

  ORA: 角色PLUSTRACE不存在

   SQL> create role plustrace;

  角色已創建

   SQL>
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>
SQL> set echo off

  DBA用戶首先被授予了plustrace角色然後我們可以把plustrace授予public

  這樣所有用戶都將擁有plustrace角色的權限

   SQL> [b]grant plustrace to public ;[/b]

  授權成功

  然後我們就可以使用AutoTrace的功能了

   SQL> connect eqsp/eqsp

  已連接

   SQL> set autotrace on
SQL> set timing on
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> set autotrace traceonly
SQL> select table_name from user_tables;

  已選擇

  已用時間: : :

   Execution Plan
  
   SELECT STATEMENT ptimizer=CHOOSE
    NESTED LOOPS
    NESTED LOOPS (OUTER)
    NESTED LOOPS (OUTER)
    NESTED LOOPS (OUTER)
    NESTED LOOPS (OUTER)
    NESTED LOOPS
    TABLE ACCESS (BY INDEX ROWID) OF OBJ$
    INDEX (RANGE SCAN) OF I_OBJ (UNIQUE)
    TABLE ACCESS (CLUSTER) OF TAB$
    INDEX (UNIQUE SCAN) OF I_OBJ# (NONUNIQUE)
    TABLE ACCESS (BY INDEX ROWID) OF OBJ$
    INDEX (UNIQUE SCAN) OF I_OBJ (UNIQUE)
    INDEX (UNIQUE SCAN) OF I_OBJ (UNIQUE)
    TABLE ACCESS (CLUSTER) OF USER$
    INDEX (UNIQUE SCAN) OF I_USER# (NONUNIQUE)
    TABLE ACCESS (CLUSTER) OF SEG$
    INDEX (UNIQUE SCAN) OF I_FILE#_BLOCK# (NONUNIQUE)
    TABLE ACCESS (CLUSTER) OF TS$
    INDEX (UNIQUE SCAN) OF I_TS# (NONUNIQUE)
  Statistics
  
   recursive calls
   db block gets
   consistent gets
   physical reads
   redo size
   bytes sent via SQL*Net to client
   bytes received via SQL*Net from client
   SQL*Net roundtrips to/from client
   sorts (memory)
   sorts (disk)
   rows processed
  SQL>

  補充一下在g中的用法

  在g中帶有plan_table這張表但是將名字改為了plan_table$

  只需$ORACLE_HOME/sqlplus/admin/plustrcesql創建plustrace角色

  grant plustrace to public


From:http://tw.wingwit.com/Article/program/Oracle/201311/18423.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.