Oracle SQL執行計劃歷史資訊表DBA_HIST_SQL_PLAN的使用
DBA_HIST_SQL_PLAN檢視記錄SQL執行計劃的歷史資訊,對於SQL調優非常有用,可以透過SQL_ID等資訊定位到SQL具體的執行計劃;
而透過EXPLAIN PLAN得到的執行計劃則是當前的執行計劃。
分析AWR,在裡面找到一條大SQL
透過這條SQL的SQL_ID,可以定位到之前這條SQL具體的執行計劃
可以看到這條SQL分別使用了3種執行計劃,一種使用主鍵索引,另外分佈使用其他兩個聯合索引,進而導致執行計劃不穩定
調優的思路:
透過HINT固定執行計劃為使用主鍵索引
UPDATE /*+ index(OSL_ODC_GENERIC_TARGET PK_OSL_ODC_GENERIC_TARGET) */ OSL_ODC_GENERIC_TARGET SET N_STATUS = :1 , C_ERRORCODE = :2 , D_UTCSTATUSTIME = :3 , D_UTCSTARTTIME = :4 WHERE ((N_ID = :5 ) AND (N_STATUS IN (:6 , :7 )));
而透過EXPLAIN PLAN得到的執行計劃則是當前的執行計劃。
分析AWR,在裡面找到一條大SQL
透過這條SQL的SQL_ID,可以定位到之前這條SQL具體的執行計劃
可以看到這條SQL分別使用了3種執行計劃,一種使用主鍵索引,另外分佈使用其他兩個聯合索引,進而導致執行計劃不穩定
調優的思路:
透過HINT固定執行計劃為使用主鍵索引
UPDATE /*+ index(OSL_ODC_GENERIC_TARGET PK_OSL_ODC_GENERIC_TARGET) */ OSL_ODC_GENERIC_TARGET SET N_STATUS = :1 , C_ERRORCODE = :2 , D_UTCSTATUSTIME = :3 , D_UTCSTARTTIME = :4 WHERE ((N_ID = :5 ) AND (N_STATUS IN (:6 , :7 )));
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2134058/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- 【Oracle】如何檢視sql 執行計劃的歷史變更OracleSQL
- [oracle] 查詢歷史會話、歷史執行計劃Oracle會話
- 檢視sql 執行計劃的歷史變更SQL
- 10G中檢視歷史執行計劃資訊
- 檢視歷史執行計劃
- Oracle sql執行計劃OracleSQL
- 透過SQL_ID檢視SQL歷史執行資訊SQL
- 通過SQL_ID檢視SQL歷史執行資訊SQL
- Oracle中檢視已執行sql的執行計劃OracleSQL
- Oracle 檢視SQL的執行計劃OracleSQL
- Oracle訪問表的執行計劃Oracle
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- oracle執行計劃的使用(EXPLAIN)OracleAI
- oracle分割槽表執行計劃Oracle
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- oracle中跟蹤sql執行計劃的方法OracleSQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- SQL的執行計劃SQL
- 使用sql profile固定執行計劃SQL
- zt_導回awr報告中的歷史執行計劃
- MySQL 5.7獲取指定執行緒正在執行SQL的執行計劃資訊MySql執行緒
- Oracle 獲取SQL執行計劃方法OracleSQL
- Oracle手動固定SQL執行計劃OracleSQL
- Oracle錶的歷史統計資訊檢視Oracle
- Oracle檢視正在執行的SQL以及執行計劃分析OracleSQL
- sql 執行計劃SQL
- 查詢SQL Server的歷史執行記錄SQLServer
- ORACLE analyse table方式收集表統計資訊導致SQL執行計劃不準確而效能下降OracleSQL
- 使用PL/SQL檢視執行計劃SQL
- 把Oracle的SQL執行計劃 授權給普通使用者OracleSQL
- 使用SQL PROFILE 給出合理的執行計劃SQL
- Oracle資料庫關於SQL的執行計劃Oracle資料庫SQL
- SQL Server執行計劃SQLServer
- SQL執行計劃分析SQL
- ORACLE執行計劃Oracle
- 【sql調優之執行計劃】獲取執行計劃SQL
- sql的執行計劃 詳解SQL