Autotrace的設定與使用

shuangoracle發表於2010-08-25

一、如何設定Autotrace

SQLPLUSAutoTrace是分析SQL的執行計劃、執行效率的一個非常簡單方便的工具,在絕大多數情況下,也是非常有用的工具。通過以下方法可以把Autotrace的許可權授予任何使用者,如果你需要限制Autotrace許可權,可以把對public的授權改為對特定user的授權。

C:Document and SettingsAdminstrator> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on星期一621 16:33:18 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> @?rdbmsadminutlxplan

表已建立。

SQL> create public synonym plan_table for plan_table;

同義詞已建立。

SQL> grant all on plan_table to public ;

授權成功。

oracle10g後,plan_table表在資料庫安裝的時候已經預設

SQL> @?sqlplusadminplustrce

上面這句實現建立角色plustrace

DBA使用者首先被授予了plustrace角色,然後我們可以把plustrace授予public。這樣所有使用者都將擁有plustrace角色的許可權.

SQL> grant plustrace to public ;

授權成功。

二、如何使用Autotrace

通過上面的設定,我們就可以使用AutoTrace的功能了。

SQL> connect test/test已連線。
SQL> set autotrace on
SQL> set timing on

(該命令可以顯示執行需要時間)

關於Autotrace幾個常用選項的說明:

SET AUTOTRACE OFF ----------------不生成AUTOTRACE報告,這是預設模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE
只顯示優化器執行路徑報告
SET AUTOTRACE ON STATISTICS --
只顯示執行統計資訊
SET AUTOTRACE ON -----------------
包含執行計劃和統計資訊
SET AUTOTRACE TRACEONLY ------
set autotrace on,但是不顯示查詢輸出

SQL> select count(*) from t1;

COUNT(*)

----------

40689

已用時間: 00: 00: 00.00

執行計劃

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

Plan hash value: 3724264953

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

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

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

| 0 | SELECT STATEMENT | | 1 | 132 (2)| 00:00:02 |

| 1 | SORT AGGREGATE | | 1 | | |

| 2 | TABLE ACCESS FULL| T1 | 39876 | 132 (2)| 00:00:02 |

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

Note

-----

- dynamic sampling used for this statement

統計資訊

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

0 recursive calls

0 db block gets

572 consistent gets

0 physical reads

0 redo size

410 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

SQL>

三、使用Autotrace額外付出的代價

由於Autotrace需要記錄你的SQL執行的成本,這個本身是往資料庫裡面讀取和寫入一定的資料的,

需要一定的時間。當你的SQL執行時間足夠短的時候,這個由於Autotrace帶來的時間就變成非常可觀的了

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1037374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章