--=======================
-- 啟用 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>