根據系統spid 定位sql
首先我們看作業系統的spid佔用資源從高到低排序。
這是我執行的測試指令碼,這樣我們就可以根據spid找到在資料庫佔用的資源大的sql。
------------------------------------------------------------------------
------------------------------------------------------------------------
1. 根據os程式號定位客戶機器:
2. 根據os程式號定位SQL語句:
點選(此處)摺疊或開啟
-
top - 16:29:07 up 1:25, 5 users, load average: 0.52, 0.27, 0.51
-
Tasks: 116 total, 3 running, 113 sleeping, 0 stopped, 0 zombie
-
Cpu(s): 82.9%us, 6.0%sy, 0.0%ni, 0.0%id, 10.0%wa, 0.3%hi, 0.7%si, 0.0%st
-
Mem: 2059580k total, 2049244k used, 10336k free, 45644k buffers
-
Swap: 4192956k total, 120k used, 4192836k free, 1697872k cached
-
-
-
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
-
1791 oracle 24 0 728m 144m 135m R 85.6 7.2 0:11.58 oracle
-
3001 oracle 16 0 732m 38m 34m S 3.7 1.9 0:00.49 oracle
-
141 root 10 -5 0 0 0 S 0.3 0.0 0:00.52 kswapd0
-
326 root 10 -5 0 0 0 S 0.3 0.0 0:00.53 kjournald
-
1 root 15 0 10348 688 576 S 0.0 0.0 0:00.51 init
-
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
-
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
-
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
-
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.19 events/0
-
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
-
23 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
-
27 root 10 -5 0 0 0 S 0.0 0.0 0:00.26 kblockd/0
-
28 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
-
66 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
- 69 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
點選(此處)摺疊或開啟
-
16:19:05 SQL> select sql_text,HASH_VALUE
-
from v$sql
-
where (address, hash_value) in
-
(select sql_address, sql_hash_value
-
from v$session s
-
where s.paddr =
-
(select addr from v$process p where p.spid = '&pid'));
-
Enter value for pid: 1791
-
old 7: (select addr from v$process p where p.spid = '&pid'))
-
new 7: (select addr from v$process p where p.spid = '1791'))
-
-
SQL_TEXT HASH_VALUE
- ------------------------------------------------------------------------------------------------------------------------
- UPDATE EMP SET SAL = :B1 +1 278858787
-
- Elapsed: 00:00:00.65
這是我執行的測試指令碼,這樣我們就可以根據spid找到在資料庫佔用的資源大的sql。
點選(此處)摺疊或開啟
-
16:27:49 SQL> begin
-
16:27:57 2 for i in 1..100000 loop
-
16:28:17 3 update emp set sal = i+1;
-
16:28:34 4 commit;
-
16:28:41 5 end loop;
-
16:28:46 6 end;
- 16:28:50 7 /
------------------------------------------------------------------------
1. 根據os程式號定位客戶機器:
點選(此處)摺疊或開啟
-
-
select sid, serial#, username, machine, osuser, process
-
from v$session s
- where s.paddr = (select addr from v$process p where p.spid = '&pid')
2. 根據os程式號定位SQL語句:
點選(此處)摺疊或開啟
-
select sql_text,HASH_VALUE
-
from v$sql
-
where (address, hash_value) in
-
(select sql_address, sql_hash_value
-
from v$session s
-
where s.paddr =
- (select addr from v$process p where p.spid = '&pid'))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1399277/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 根據IP定位地理位置
- 根據作業系統程式號,查詢sql語句作業系統SQL
- 在AIX系統根據oracle程式pid查詢sql語句AIOracleSQL
- js,javascript 根據 xpath 路勁定位節點JSJavaScript
- 根據PID查詢 sqlSQL
- 根據生日求年齡的SQLSQL
- Oracle如何根據SQL_TEXT生成SQL_IDOracleSQL
- 根據DELTA自動生成SQL語句SQL
- sql根據團隊樹一級一級彙總統計SQL
- 根據作業系統程式號檢視oracle對應的SQL語句內容作業系統OracleSQL
- 【轉】從spid查詢sqlSQL
- T-sql 根據日期時間 按年份、月份、天來統計SQL
- jdbc根據例項名 連線 sql serverJDBCSQLServer
- SQL根據分組求連續範圍SQL
- BIRT 中如何根據引數動態拼接 SQLSQL
- SQL server根據表名查詢表主鍵SQLServer
- EF:根據實體類生成表結構SQLSQL
- 根據SQL_ID檢視執行計劃SQL
- 根據SQL Id獲得SQL語句的執行計劃SQL
- 根據提示操作
- 根據sql_id 查詢歷史SQL TEXT :dba_hist_sqltextSQL
- 將APP加入系統分享+根據Uri獲取絕對路徑APP
- 【SQL】根據兩列資訊,整合兩張表資料SQL
- 根據程式的ID取得該程式的SQL指令碼SQL指令碼
- Java高精度定位系統原始碼 UWB定位系統原始碼 定位系統原始碼Java原始碼
- sql根據多個欄位查詢重複記錄SQL
- SQL優化案例-定位系統中大量的rollback(十八)SQL優化
- Map根據Value排序排序
- uniapp根據導航欄的標題定位到相應錨點位置APP
- sql_case when_根據不同使用者型別統計收藏記錄數SQL型別
- SQL 如何在時間序列中根據欄位變化分組SQL
- MySQL關於根據日期查詢資料的sql語句MySql
- pid,sid相互查詢,根據PID查詢sqlSQL
- 記錄一次根據錯誤資訊無法定位錯誤的錯誤
- 根據Interceptor 分析 OkHttp(一)HTTP
- 根據ip獲取城市
- java 根據日期取得星期Java
- js根據時間排序JS排序