Oracle資料庫awr報告使用與分析
轉:https://www.cnblogs.com/zhaot1993/p/13530739.html
一 AWR報告生成
1、生成AWR(Automatic Workload Repository)報告:
sqlplus / as sysdba
SQL>@?/rdbms/admin/awrrpt.sql
2、修改採集時間和統計資訊保留時間:
SQL>exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>7*24*60);
SQL>select * from dba_hist_wr_control;
3、手動執行一個快照:
SQL>exec dbms_workload_repository.create_snapshot;
4、建立一個AWR基線:
SQL>exec dbms_workload_repository.create_baseline(start_snap_id,end_snap_id,baseline_name);
二 AWR主要指標說明
指標 |
指標說明 |
redo size |
單位bytes,redosize可以用來估量update/insert/delete的頻率, 大的redosize往往對lgwr寫日誌和arch歸檔造成I/O壓力。 |
Logical Read |
單位 次數*塊數, 邏輯讀耗CPU,主頻和CPU核數都很重要, 邏輯讀高則DBCPU往往高,也往往可以看到latch: cache buffers chains等待。 |
Block changes |
單位次數*塊數 , 描繪資料變化頻率 |
Physical Read |
單位次數*塊數, 物理讀消耗IO,體現在IOPS和吞吐量等不同維度上;但減少物理讀可能意味著消耗更多CPU。 physical read包含了physical reads cache和physical reads direct |
Physical writes |
單位次數*塊數,主要是DBWR寫datafile,也有direct path write。 dbwr長期寫出慢會導致定期log file switch(checkpoint no complete) 檢查點無法完成的前臺等待。 physical write 包含了physical writes direct +physical writes from cache |
User Calls |
單位次數,使用者呼叫數 |
Parses |
解析次數,包括軟解析+硬解析; 軟解析每秒超過300次意味著”應用程式”效率不高,調整session_cursor_cache。 |
Hard Parses |
萬惡之源,Cursor pin s on X, library cache: mutex X , latch: row cache objects /shared pool… 硬解析最好少於每秒20次,每秒超過100次,說明繫結使用的不好,也可能共享池設定不合理。 |
W/A MB processed |
單位MB W/A workarea workarea中處理的資料數量結合 In-memory Sort%, sorts (disk) PGA Aggr一起看 |
Transactions |
每秒事務數,是資料庫層的TPS,可以看做壓力測試或比對效能時的一個指標,孤立看無意義。 |
% Blocks changed per Read |
每次邏輯讀導致資料塊變化的比率;如果’redo size’, ‘block changes’ ‘pct of blocks changed per read’,三個指標都很高,說明系統正執行大量insert/update/delete; |
Rollback per transaction %
|
事務回滾比率。 Rollback per transaction %= (rollback)/(transactions) |
Rows per Sort |
|
Buffer Nowait % |
session申請一個buffer(相容模式)不等待的次數比例,需要訪問buffer時立即可以訪問的比率; |
buffer HIT% |
快取記憶體命中率,反映物理讀和快取命中間的糾結,這個指標即便99% 也不能說明物理讀等待少了; |
Redo nowait% |
session在生成redo entry時不用等待的比例,redo相關的資源爭用,小於90%,考慮增加log buffer; |
In-memory Sort% |
在記憶體中完成的排序比率 ;In-memory Sort% = sort(memory) / ( sort(disk)+ sort(memory) ) |
Library Hit% |
library cache命中率,合理值:>95% ,否則加大共享池,使用繫結變數,修改cursor_sharing等引數; |
Soft Parse % |
快照時間內軟解析次數和總解析次數 (soft+hard 軟解析次數+硬解析次數)的比值; |
Execute to Parse% |
執行解析比 ,公式為 1-(parse/execute),目標為100%; (Execute次數 - Parse次數)/Execute次數 x 100% |
Latch Hit% |
申請不要等待的比率,Latch Hit%:= (1 – (Sum(misses) / Sum(gets))) |
Memory Usage % |
shared pool的空間使用率,穩定在75%-90% |
% SQL with executions>1 |
複用的SQL佔總的SQL語句的比率, |
% Memory for SQL w/exec>1 |
執行2次以上的SQL所佔記憶體佔總的SQL記憶體的比率 |
% Non-Parse CPU |
CPU非分析時間在整個CPU時間的百分比,查詢實際執行時間/(查詢實際執行時間+sql解析時間) |
三 AWR報告分析
分析內容:
1、CPUs、Elapsed、DB Time
2、Load Profile
3、Instance Efficiency Percentages
4、Top 10 Foreground Events by Total Wait Time
5、SQL Statistics
6、Global Cache Load Profile
7、Global Cache Efficiency Percentages
8、Global Cache and Enqueue Services
四 SQL語句分析
1、SQL> explain plan for sql ;
2、SQL>select * from table(dbms_xplan.display_cursor(sql_id));
3、SQL>@?/rdbms/admin/sqltrpt.sql sql_id
五 Oracle常見等待事件解決方法
Sequential Read:調整相關的索引和選擇合適的驅動行源
Scattered Read:表明出現很多全表掃描。優化code,cache小表到記憶體中。
Free Buffer:增大DB_CACHE_SIZE,增大checkpoint的頻率,優化程式碼; oracle之檢查點(Checkpoint);資料庫日誌用來斷電回滾,日誌通過buffer觸發IO寫入磁碟,這個觸發由檢查點來做。
Buffer Busy Segment header:增加freelist或者freelistgroups
Buffer Busy Data block:隔離熱塊;使用反轉索引;使用更小的塊;增大表的initrans
Buffer Busy Undo header:增加回滾段的數量或者大小
Buffer Busy Undo block Commit more:增加回滾段的數量或者大小
Enqueue–ST:使用本地管理的表空間或者增加預分配的盤區大小
Enqueue–HW:在HWM之上預先分配盤區
Enqueue–TX4:在表或者索引上增大initrans的值或者使用更小的塊
Log Buffer Space:增大LOG_BUFFER,改善I/O
Log File Switch:增加或者增大日誌檔案
Log file sync:減小提交的頻率;使用更快的I/O;或者使用裸裝置
Write complete waits:增加DBWR;提高CKPT的頻率;
gc cr/current request:增加頻寬;隔離熱塊;增加LMS程序數;提高磁碟IO
gc cr multi block busy:在RAC層面將應用功能分離
gc buffer busy acquire/release:分割槽;反向索引;提高SQL效率;將不同應用功能資料分佈在不同資料庫例項上
DFS lock handle:增大序列快取,不使用排序選項
Latch Free:檢查具體的等待latch型別,解決方法如下
Library cache:使用繫結變數; 調整shared_pool_size.
Shared pool:使用繫結變數; 調整shared_pool_size.
Redo allocation:減小 redo 的產生; 避免不必要的commits.
Redo copy:增加 _log_simultaneous_copies.
Row cache objects:增加shared_pool_size
Cache buffers chain:增大 _DB_BLOCK_HASH_BUCKETS ; make it prime.
Cache buffers LRU chain:使用多個緩衝池;調整引起大量邏輯讀的查詢
TBL$OR$IDX$PART$NUM,這個BUG的主要影響範圍是 12.1.0.1 (Base Release) 和 11.2.0.4。詳情;
__EOF__