如何確定 Oracle 中等待時間最長的 SQL 查詢?


問題

您希望識別出導致資料庫中等待時間最長的 SQL 語句。

解決方案

我們可以使用以下 SQL 語句來識別出導致問題的 SQL。以下查詢將對過去 30 分鐘內執行的 SQL 語句進行排名,並根據每個查詢的總等待時間顯示它們。

示例

SELECT ash.user_id,   u.username,   s.sql_text,   SUM(ash.wait_time + ash.time_waited) ttl_wait_time FROM v$active_session_history ash,   v$sqlarea s,   dba_users u WHERE ash.sample_time BETWEEN sysdate - 60/2880 AND sysdate AND ash.sql_id  = s.sql_id AND ash.user_id = u.user_id GROUP BY ash.user_id,   s.sql_text,   u.username ORDER BY ttl_wait_time ;

當您遇到效能問題時,我們建議您驗證哪些 SQL 語句的等待時間最長。要找到等待時間最長的查詢,您必須對 "V$ACTIVE_SESSION_HISTORY" 檢視的 wait_time 和 time_waited 列中針對特定 SQL 語句的值求和。為此,您必須使用 SQL_ID 作為連線列將 V$SQLAREA 檢視與 "V$ACTIVE_SESSION_HISTORY" 檢視連線起來。

更新於: 2020-12-05

2K+ 瀏覽

啟動你的職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.