基於dba_hist_sqlstat檢視sql語句的效能歷史
在生產環境中,如果系統已經穩定,調優的空間就會越來越小,但是不代表沒有調優的餘地,可能工作的重心就會更加求穩,sql調優就是一項不間斷的工作,很多工作還是需要前瞻的,如果等到問題嚴重的時候再緊急處理,提前的分析這些潛在問題就會讓你不會總是心跳加快,兩手冒汗。
dba_hist_sqlstat是一個寶庫,很多的sql執行統計資訊都會在其中,可以基於這個資料字典分析很多的特性,比如檢視某條sql語句的效能歷史,分析執行計劃是否穩定等等,這些功能在分析sql語句的時候是相當實用的,畢竟一個awr報告中的sql問題可能只是一個表象,如果結合歷史來看就會分析出更多的因素來。
這個指令碼在<>中提到,而且可以透過網站找到相關的指令碼內容,如果明白了思路,大家想自己定製一下也不錯。
大多數的指令碼可以透過連結找到http://kerryosborne.oracle-guy.com/2009/06/oracle-11g-adaptive-cursor-sharing-acs/
指令碼執行情況如下:
SNAP_ID NODE BEGIN_INTERVAL_TIME SQL_ID PLAN_HASH_VALUE EXECS AVG_ETIME AVG_LIO
---------- ------ ------------------------------ ------------- --------------- ------------ ------------ --------------
38878 1 31-MAR-15 05.20.06.216 PM 0xtpfz5pj4prb 1880269335 104 5.702 327,280.7
38879 1 31-MAR-15 05.30.06.754 PM 0xtpfz5pj4prb 119 4.926 326,385.0
38880 1 31-MAR-15 05.40.07.622 PM 0xtpfz5pj4prb 125 4.713 328,324.9
38881 1 31-MAR-15 05.50.08.418 PM 0xtpfz5pj4prb 6 6.461 361,164.7
38884 1 31-MAR-15 06.20.09.984 PM 0xtpfz5pj4prb 21 5.324 321,935.6
38885 1 31-MAR-15 06.30.10.720 PM 0xtpfz5pj4prb 107 5.539 325,886.4
38886 1 31-MAR-15 06.40.11.283 PM 0xtpfz5pj4prb 64 5.432 329,591.9
38887 1 31-MAR-15 06.50.11.900 PM 0xtpfz5pj4prb 110 5.397 326,757.1
38888 1 31-MAR-15 07.00.12.457 PM 0xtpfz5pj4prb 103 5.792 329,023.0
38889 1 31-MAR-15 07.10.13.355 PM 0xtpfz5pj4prb 126 4.682 328,220.6
38890 1 31-MAR-15 07.20.13.848 PM 0xtpfz5pj4prb 128 4.601 326,872.7
38891 1 31-MAR-15 07.30.14.326 PM 0xtpfz5pj4prb 1880269355 131 4.508 328,507.7
38892 1 31-MAR-15 07.40.14.905 PM 0xtpfz5pj4prb 129 4.571 326,210.3
38893 1 31-MAR-15 07.50.15.372 PM 0xtpfz5pj4prb 132 4.468 327,796.7
38894 1 31-MAR-15 08.00.15.889 PM 0xtpfz5pj4prb 113 5.176 328,226.4
38895 1 31-MAR-15 08.10.16.442 PM 0xtpfz5pj4prb 63 5.194 332,234.3
38897 1 31-MAR-15 08.30.17.385 PM 0xtpfz5pj4prb 37 6.175 326,039.1
38898 1 31-MAR-15 08.40.17.922 PM 0xtpfz5pj4prb 76 7.755 327,436.6
38899 1 31-MAR-15 08.50.18.469 PM 0xtpfz5pj4prb 113 5.245 327,478.5
38900 1 31-MAR-15 09.00.18.950 PM 0xtpfz5pj4prb 127 4.614 326,215.6
38901 1 31-MAR-15 09.10.19.458 PM 0xtpfz5pj4prb 74 4.316 332,214.9
如果某些指標突然發生了重大的變化,可以透過效能歷史很清晰的看到,對於plan_hash_value做了斷句處理,如果發生了執行計劃的改變,就會很清楚什麼時間點有了變動,哪些方面的變化等等。
dba_hist_sqlstat是一個寶庫,很多的sql執行統計資訊都會在其中,可以基於這個資料字典分析很多的特性,比如檢視某條sql語句的效能歷史,分析執行計劃是否穩定等等,這些功能在分析sql語句的時候是相當實用的,畢竟一個awr報告中的sql問題可能只是一個表象,如果結合歷史來看就會分析出更多的因素來。
這個指令碼在<
大多數的指令碼可以透過連結找到http://kerryosborne.oracle-guy.com/2009/06/oracle-11g-adaptive-cursor-sharing-acs/
分析某一條sql語句的效能歷史指令碼
set lines 155 col execs for 999,999,999 col avg_etime for 999,999.999 col avg_lio for 999,999,999.9 col begin_interval_time for a30 col node for 99999 break on plan_hash_value on startup_time skip 1 select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value, nvl(executions_delta,0) execs, (elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime, (buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS where sql_id = nvl('&sql_id','4dqs2k5tynk61') and ss.snap_id = S.snap_id and ss.instance_number = S.instance_number and executions_delta > 0 order by 1, 2, 3 /
指令碼執行情況如下:
SNAP_ID NODE BEGIN_INTERVAL_TIME SQL_ID PLAN_HASH_VALUE EXECS AVG_ETIME AVG_LIO
---------- ------ ------------------------------ ------------- --------------- ------------ ------------ --------------
38878 1 31-MAR-15 05.20.06.216 PM 0xtpfz5pj4prb 1880269335 104 5.702 327,280.7
38879 1 31-MAR-15 05.30.06.754 PM 0xtpfz5pj4prb 119 4.926 326,385.0
38880 1 31-MAR-15 05.40.07.622 PM 0xtpfz5pj4prb 125 4.713 328,324.9
38881 1 31-MAR-15 05.50.08.418 PM 0xtpfz5pj4prb 6 6.461 361,164.7
38884 1 31-MAR-15 06.20.09.984 PM 0xtpfz5pj4prb 21 5.324 321,935.6
38885 1 31-MAR-15 06.30.10.720 PM 0xtpfz5pj4prb 107 5.539 325,886.4
38886 1 31-MAR-15 06.40.11.283 PM 0xtpfz5pj4prb 64 5.432 329,591.9
38887 1 31-MAR-15 06.50.11.900 PM 0xtpfz5pj4prb 110 5.397 326,757.1
38888 1 31-MAR-15 07.00.12.457 PM 0xtpfz5pj4prb 103 5.792 329,023.0
38889 1 31-MAR-15 07.10.13.355 PM 0xtpfz5pj4prb 126 4.682 328,220.6
38890 1 31-MAR-15 07.20.13.848 PM 0xtpfz5pj4prb 128 4.601 326,872.7
38891 1 31-MAR-15 07.30.14.326 PM 0xtpfz5pj4prb 1880269355 131 4.508 328,507.7
38892 1 31-MAR-15 07.40.14.905 PM 0xtpfz5pj4prb 129 4.571 326,210.3
38893 1 31-MAR-15 07.50.15.372 PM 0xtpfz5pj4prb 132 4.468 327,796.7
38894 1 31-MAR-15 08.00.15.889 PM 0xtpfz5pj4prb 113 5.176 328,226.4
38895 1 31-MAR-15 08.10.16.442 PM 0xtpfz5pj4prb 63 5.194 332,234.3
38897 1 31-MAR-15 08.30.17.385 PM 0xtpfz5pj4prb 37 6.175 326,039.1
38898 1 31-MAR-15 08.40.17.922 PM 0xtpfz5pj4prb 76 7.755 327,436.6
38899 1 31-MAR-15 08.50.18.469 PM 0xtpfz5pj4prb 113 5.245 327,478.5
38900 1 31-MAR-15 09.00.18.950 PM 0xtpfz5pj4prb 127 4.614 326,215.6
38901 1 31-MAR-15 09.10.19.458 PM 0xtpfz5pj4prb 74 4.316 332,214.9
如果某些指標突然發生了重大的變化,可以透過效能歷史很清晰的看到,對於plan_hash_value做了斷句處理,如果發生了執行計劃的改變,就會很清楚什麼時間點有了變動,哪些方面的變化等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1480838/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中檢視sql命令歷史,檢視rman命令歷史OracleSQL
- Oracle檢視歷史TOP SQLOracleSQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- 檢視低效的SQL語句SQL
- 基於AWR對特定的SQL_ID檢視詳細的歷史執行情況SQL
- 二、GIT基礎-檢視提交歷史Git
- Oracle日常效能檢視常用語句Oracle
- 檢視sql 執行計劃的歷史變更SQL
- 檢視mysql正在執行的SQL語句MySql
- 透過SQL_ID檢視SQL歷史執行資訊SQL
- 通過SQL_ID檢視SQL歷史執行資訊SQL
- 關於在SAP中SQL語句的效能SQL
- git檢視提交歷史Git
- Git 檢視提交歷史Git
- git檢視歷史命令Git
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Git 檢視檔案的歷史Git
- Oracle 檢視佔用undo大的sql語句OracleSQL
- sqlserver 檢視和sql語句的效率對比SQLServer
- 檢視造成等待事件的具體SQL語句事件SQL
- sql 語句網路除錯和 sql 語句低層傳輸檢視SQL除錯
- 【Oracle】如何檢視sql 執行計劃的歷史變更OracleSQL
- SQL語句大全—檢視錶空間(二)SQL
- SQL語句大全—檢視錶空間(一)SQL
- 【DBA】DBA_HIST_SQLSTAT檢視用途SQL
- [zt] 基於索引的SQL語句優化索引SQL優化
- 檢視包正在被哪個程式使用,檢視包含SQL語句的PACKAGESQLPackage
- 檢視歷史執行計劃
- sql語句效能優化SQL優化
- 用LinqPad檢視Nhibernate生成的sql語句SQL
- sql server中如何檢視執行效率不高的語句SQLServer
- 檢視當前oracle中正在執行的sql語句OracleSQL
- Oracle錶的歷史統計資訊檢視Oracle
- SQL 語句基礎SQL
- 檢視v$sql_shared_cursor檢視獲取sql語句為什麼不能共享?SQL
- MySQL_通過binlog檢視原始SQL語句MySql
- git log檢視提交歷史記錄Git
- git簡略形式檢視提交歷史Git