Oracle中sql量化分析工具

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

這次主要整理了explain,sql*trace,tkprof,auto*trace的使用數據庫

1.explainsession

2.sql*traceide

3.tkprof工具

4.auto*tracespa


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)。

相關文章
相關標籤/搜索