文章詳情頁
使用Windows工具管理Nt上的Oracle數據庫
瀏覽:103日期:2023-11-15 15:15:25
link:http://www.eygle.com/faq/Use.Nt.tools.manage.Oracle.htm1.TOPTop 工具可以監視最消耗系統資源的進程 Pid 即process id,Windows是多線程服務器,每個進程包含一系列線程,這個與UNIX不同,Unix每個Oralce進程獨立存在,在Nt上所有線程由Oralce進程衍生。所以只用TOP工具我們還無法找出每個連接的用戶進程。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上由于某個進程的sql或其他問題導致資源過度占用或消耗,比如如下這樣一條語句,那么我們怎樣來找到這條問題sql呢?2.QSLICE找到最消耗資源的線程號,本例中為(6ec),為16進制,需要轉換,v$process視圖中的進程ID為十進制使用getsql.sql腳本即可獲得當前正在執行的SQL語句:REM getsql.sqlREM author eygleREM 在windows上,已知進程ID,得到當前正在執行的語句REM 在windows上,進程ID為16進制,需要轉換,在UNIX直接為10進制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/運行以上腳本:ok,找到這最消耗資源的問題SQL接下來就可以進行針對性調整了.相關工具下載地址:http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/qslice-o.ASP
排行榜
