Oracle中sql量化分析工具

Oracle提供的量化分析工具有explain,sql*trace,tkprof,auto*trace,awr,addm,sql*profiling,sql access advisor,sql tuning advisor,ash等

此次主要整理了explain,sql*trace,tkprof,auto*trace的使用

1.explain

2.sql*trace

3.tkprof

4.auto*trace


1.explain的使用

1.1 先創建plan_table

    @?/rdbms/admin/utlxplan ;

1.2 分析sql語句執行計劃

    explain plan for select * from dba_objects ;

1.3 查看sql語句執行計劃

    @?/rdbms/admin/utlxpls.sql; 9i下只查看串行執行計劃,10g既查看串行也查看並行

    @?/rdbms/admin/utlxplp.sql; 查看並行執行計劃

explain並沒有真正的執行sql語句,所以實際過程可能與explain分析結果不相同。如explain分析之後,又對相關表建立了新的索引或者刪除了索引、採集了新的統計信息等操作


10g中的新功能 dbms_xplan

 dbms_xplan.display

    顯示存儲在v$sql_plan視圖中的語句執行計劃

 dbms_xplan.display_cursor

    顯示任何加載的cursor中的語句執行計劃

 dbms_xplan.display_awr

    顯示保存在awr中的語句執行計劃

select plan_table_output from table(dbms_xplan.display()) ;


2.sql*trace和tkprof的使用

大致的過程如下所示

database--(sql trace)--trace file--(tkprof)--report file


sql*trace和explain不同的是,sql*trace不是針對單個sql語句進行執行計劃分析的,而是在會話級,甚至實例級對sql語句進行跟蹤,並在操作系統中產生相應的trace文件

sql*trace是跟蹤sql語句的真實執行執行情況,Oracle提供tkprof程序將trace文件轉換爲可讀性較強的文件

2.1 在會話級進行跟蹤

alter session set sql_trace = true ;
execute dbms_session.set_sql_trace(true) ;

   其他會話的跟蹤

execute dbms_system.set_trace_in_session(session_id,serial_id,true);

分析的時候,首先查看那些會話比較消耗資源,然後從v$session視圖查詢session_id,serial_id,通過以上的命令對這些會話的活動進行跟蹤和分析

2.2 在實例級進行跟蹤

設置sql_trace爲true即可

建議不要採取這個措施,會對數據庫產生較大的壓力,會產生太多的trace文件

使用sql_trace產生的trace文件,原始文件閱讀起來相對比較費勁,可以使用tkprof程序進行轉換

例如:

tkprof tracefile outputfile [options]

tkprof tracefile outputfile sys=no explain=hr/hr sort=execcput print=3

sys=no表示不分析sys用戶執行的sql語句

explain=hr/hr 表示連接到hr用戶,並進行執行計劃分析

sort=execcput 表示按照CPU消耗值,對該trace文件所包含的sql語句按照排序進行分析

print=3 表示只是分析前3條sql語句

直接在os輸入tkprof可以查看所有的幫助

tkprof產生的文件,主要分析以下內容

1.各語句執行情況的統計信息

2.各語句的執行路徑信息


3.autotrace的使用

3.1 打開autotrace

set autotrace on 

set timing on 

執行sql語句

3.2 只看執行計劃、統計信息

set autotrace traceonly

3.3 只看執行計劃

set autotrace traceonly explain 

autotrace是語句真正執行之後的執行計劃

3.4 只看統計信息

set autotrace statistics

3.5 查看幫助

set autotrace 

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

3.6 如何查看統計信息

重點查看consistent gets和physical reads指標,分別代表內存消耗和磁盤IO消耗,單位是數據塊大小(db_block_size)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章