如何查看及解決最耗cpu的sql語句
1. 如何查看及解決最耗CPU的SQL語句1.1. 用top監控服務器負載
如果發現user中的CPU過高,比如oracle中最高的進程pid為1138782,占CPU27%,則執行下一步。 1.2. 查詢數據庫會話的sid、serial#進入數據庫,根據oracle進程的pid查出對應數據庫會話的sid、serial#:
查詢出來的結果sid、serial#分別為482、56767 1.3. 查詢SQL語句根據數據庫會話的sid查出具體的SQL語句:
名稱 是否為空? 類型 ----------------------------------------- -------- -------------- ADDRESS RAW(4) HASH_VALUE NUMBER COMMAND_TYPE NUMBER PIECE NUMBER SQL_TEXT VARCHAR2(64)
輸入 sid 的值: 1.4. 處理SQL語句如果SQL語句影響了數據庫的運行,可以kill掉SQL語句的會話: ①在數據庫中殺死SQL語句的會話:
如果不能在數據庫中殺死SQL語句,可在LINUX系統中強制殺死Oracle進程 ②在linux系統中強制殺死oracle進程
最后可以根據步驟(3)查詢出來的SQL語句進行優化,以避免再次出現上述消耗CPU的情況。 |