原文鏈接:
https://www.php.cn/link/a0bc671c2bbe978c889ab37f2c4b72b1
1.TOP
Top工具可用于監(jiān)控系統(tǒng)中最耗資源的進(jìn)程。
Pid即進(jìn)程ID,Windows是多線程服務(wù)器,每個(gè)進(jìn)程包含多個(gè)線程,這與unix不同,UNIX中的每個(gè)oracle進(jìn)程是獨(dú)立的,而在Nt上,所有線程都由Oracle進(jìn)程派生。
因此,僅使用Top工具,我們無法識(shí)別每個(gè)連接的用戶進(jìn)程。

71% 00000000?1?16384?0?8:52:53.936 No Name Found0% 00000008?4116?282624?24576?0:00:45.164 System1% 000000B8?27023?991232 2207744?0:03:10.313 CSRSS.EXE0% 00000524?1844 2035712 3137536?0:00:11.726 rundll32.exe0% 0000032C?1002 1765376 1380352?0:00:08.432 AOM.exe0% 000004E8?773695 7610368 8146944?0:04:26.533 XDICT.EXE0% 00000720?583880 5079040 33280000?0:08:29.122 NetCaptor.exe23% 000006F4?11882 37056512 79757312?0:00:07.661 oracle.exe0% 00000420?1622 1478656 2420736?0:00:00.170 sqlPLUS.EXE |
如果在Windows上某個(gè)進(jìn)程的SQL或其他問題導(dǎo)致資源過度占用或消耗,比如如下這樣一條語句,我們?nèi)绾握业竭@條問題SQL呢?
2.QSLICE
首先,找到最消耗資源的線程號(hào),在本例中為(6ec),它是以16進(jìn)制顯示的,需要轉(zhuǎn)換成十進(jìn)制,而v$process視圖中的進(jìn)程ID是以十進(jìn)制表示的。
使用getsql.sql腳本即可獲取當(dāng)前正在執(zhí)行的sql語句:
REM getsql.sqlREM author eygleREM 在windows上,已知進(jìn)程ID,得到當(dāng)前正在執(zhí)行的語句REM 在windows上,進(jìn)程ID為16進(jìn)制,需要轉(zhuǎn)換,在UNIX直接為10進(jìn)制select /*+ ORDEred */ sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN ( SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value ), DECODE (sql_hash_value, 0, prev_sql_addr, sql_address) FROM v$Session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = TO_NUMBER (‘&pid’, ‘xxxx’)))ORDER BY piece ASC/ |
運(yùn)行以上腳本:
這樣,我們就找到了最消耗資源的問題SQL,然后可以進(jìn)行針對(duì)性的調(diào)整。
相關(guān)工具下載地址:
https://www.php.cn/link/0628578027f2f3e17abf142c0faec461
以上就是使用Windows