【文章內(nèi)容簡介】
l執(zhí)行計(jì)劃。 刪除在兩個(gè)快照號(hào)之間包括本身的所有統(tǒng)計(jì)分析數(shù)據(jù)。 截取statspack統(tǒng)計(jì)分析的相關(guān)數(shù)據(jù) 在統(tǒng)計(jì)分析的對(duì)應(yīng)用戶perfstat下執(zhí)行執(zhí)行時(shí)間:統(tǒng)計(jì)時(shí)生成兩次快照,一般在3040分鐘左右執(zhí)行方法:用sys登陸sqlplus后間隔對(duì)應(yīng)時(shí)間執(zhí)行兩次 exec 。統(tǒng)計(jì)結(jié)果視圖:stats$snapshot快照相關(guān)信息; select snap_id,snap_time from stats$snapshot。stats$sqltext快照統(tǒng)計(jì)sql信息,查詢統(tǒng)計(jì)sql(statspack報(bào)告中sql過長會(huì)被截掉)select sql_text from stats$sqltext where hash_value=查詢值 and last_snap_id=begin_snap_id order by piece。 實(shí)時(shí)查找如果需要實(shí)時(shí)的查找性能隱患的相關(guān)sql,通過v$session_wait,v$session,v$sqltext_with_newlines三張動(dòng)態(tài)視圖就可以基本查找到相關(guān)的sql,腳本如下:select sql_text , from v$sqltext_with_newlines st,v$session se,v$session_wait sw where = and = = and ( = 39。buffer busy waits39。 or = 39。enqueue39。 or = 39。free buffer waits39。 or = 39。global cache freelist wait39。 or = 39。latch free39。 or = 39。log buffer space39。 or = 39。parallel query qref latch39。 or = 39。pipe put39。 or = 39。write plete waits39。 or like 39。library cache%39。 or like 39。log file switch%39。 ) order by ,。 分析報(bào)告?zhèn)€人一般主要關(guān)注top 5 event以及相關(guān)的讀邏輯塊、物理塊、執(zhí)行次數(shù)較多的sql,實(shí)際上更多的側(cè)重在sql分析上一般常見的top 5 事件如下:db file sequential read等待事件,一般問題出現(xiàn)在讀索引上,建議將業(yè)務(wù)表空間和索引表空間分開存儲(chǔ)在不同的物理卷下,以提高磁盤的I/O性能。db file scattered read建議程序中盡量避免使用全表掃描的語句,或者可以增大db_file_multiblock_read_count的值,提高全表掃描一次讀取數(shù)據(jù)塊的速度,減少磁盤I/O。db file parallel write說明DBWR進(jìn)程正等待把緩沖區(qū)的內(nèi)容并行寫入數(shù)據(jù)文件中去,等待將一直持續(xù)到所有的I/O全部完成。建議增大初始化參數(shù)中的db_writer_processes的值。log file sync說明任何時(shí)候一個(gè)事物提交時(shí),它將通知LGWR將LOG_BUFFER寫入日志文件,如果此部分占用時(shí)間較長,應(yīng)減少COMMIT的次數(shù),建議將重做日志放到較快的磁盤上進(jìn)行存儲(chǔ)。log file parallel write等待事件,和上面一樣建議將重做日志放到較快的磁盤上進(jìn)行存儲(chǔ)。提取出sql以后就可以進(jìn)行分析,主要采用分析執(zhí)行計(jì)劃的方式。個(gè)人一般喜歡如下的方式進(jìn)行分析:l 生成計(jì)劃表(初次)以sys用戶執(zhí)行腳本${oracle_home}/rdbms/admin/,l 創(chuàng)建公用同義詞,方便在每個(gè)用戶下生成執(zhí)行計(jì)劃(初次)Create public synonym plan_table for plan_table。Grant all on plan_table to public。l 每次分析時(shí)設(shè)置sqlplus環(huán)境變量Set timing onSet autotrace traceonlyl 查看相關(guān)sql執(zhí)行計(jì)劃其他客戶端軟件pl/sql developer,toad 分析執(zhí)行計(jì)劃都比較方便。l 執(zhí)行計(jì)劃路徑解釋Full Table Scans全表掃描、無可用索引Index Unique Scans索引唯一掃描IndexRange Scans索引范圍掃描IndexRange Scans Descending索引降序范圍掃描Index Skip Scans索引跳躍掃描Full Scans全索引掃描Fast Full Index Scans快速全索引掃描Index Joins索