根據SQL Id獲得SQL語句的執行計劃
對於在生成的AWR報告中被發現的消耗資源較多的SQL語句,根據SQL Id可以使用AWR提供的awrsqrpt.sql(或awrsqrpi.sql)指令碼達到獲取SQL語句執行計劃的目的。
以上兩個指令碼的詳細路徑在$ORACLE_HOME/rdbms/admin/目錄下。其中awrsqrpt.sql用於本地預設資料庫,而awrsqrpi.sql不僅可以到處本地預設資料庫所對應的SQL執行計劃,也可以用於AWR資料匯入後異地資料庫SQL執行計劃(用於遠端診斷及分析)。在awrsqrpi.sql中的如下notes說明這一點:
NOTES
Run as SYSDBA. Generally this script should be invoked by awrsqrpt,
unless you want to pick a database other than the default.
[@more@]顯示SQL執行計劃的方法:
SQL>connect sys/password as sysdba;
SQL> @?/rdbms/admin/awrsqrpt.sql
或
SQL>connect sys/password as sysdba;
SQL> @?/rdbms/admin/awrsqrpti.sql
後按提示輸入或選擇對應的引數即可。
如果根據SQL執行計劃發現某些列需要建立索引或要判斷SQL中繫結變數的具體值的離散度等,則根據如下SQL可以找到繫結變數的值:
簡單的查詢方法:
select dbms_sqltune.extract_binds(bind_data) from wrh$_sqlstat a where a.sql_id='62q97n1yka8qc'
格式化顯示繫結變數值的SQL:
select dbms_sqltune.extract_bind(bind_data, 1).value_string||'-'|| dbms_sqltune.extract_bind(bind_data, 2).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 3)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 4).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 5)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 6).value_string||'-'||dbms_sqltune.extract_bind(bind_data, 7).value_string
from wrh$_sqlstat
where sql_id = '62q97n1yka8qc'
/
以上方法和SQL是Eygle大師那兒學到的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1055123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 獲得目標SQL語句執行計劃的方法SQL
- 根據SQL_ID檢視執行計劃SQL
- 【AWR】通過AWR報告中記錄的 SQL Id獲得SQL語句的執行計劃SQL
- 使用dbms_xplan包來獲得sql語句的執行計劃SQL
- 清除SQL語句的執行計劃SQL
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- 指令碼:獲得現有語句的執行計劃指令碼
- 使用 EXPLAIN PLAN 獲取SQL語句執行計劃 (R0.1)AISQL
- 通過分析SQL語句的執行計劃優化SQL 二SQL優化
- 獲取oracle正在處於等待狀態的sql語句的執行計劃的語句OracleSQL
- Laravel 獲取執行的sql語句LaravelSQL
- 根據DELTA自動生成SQL語句SQL
- 【檢視】使用V$SQL_PLAN檢視獲取曾經執行過的SQL語句執行計劃SQL
- 獲取SQL執行計劃SQL
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- 一條SQL語句的執行計劃變化探究SQL
- 透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- 獲取SQL執行計劃的方式:SQL
- 通過等待事件來獲得查詢SQl的執行計劃事件SQL
- spark sql語句效能最佳化及執行計劃SparkSQL
- 【sql調優之執行計劃】獲取執行計劃SQL
- [轉]透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- sql語句如何執行的SQL
- 執行大的sql語句SQL
- Oracle 獲取SQL執行計劃方法OracleSQL
- 根據emp,dept,salgrade表進行的sql查詢語句(1)SQL
- sql語句批量執行SQL
- 在AIX系統根據oracle程式pid查詢sql語句AIOracleSQL
- 【指令碼】通過hash_value直接獲得sql語句的執行計劃(9i-->10g過度)指令碼SQL
- SQL的執行計劃SQL
- SQL Server SQL語句執行順序SQLServer
- sql 執行計劃SQL
- mysql的sql語句執行流程MySql
- SQL 語句的執行順序SQL
- MySQL關於根據日期查詢資料的sql語句MySql
- SQL語句執行順序SQL
- toad執行sql語句SQL