Pages

Friday, September 16, 2011

Top SQL session monitoring

Get the TOP session by following command


$ top

top - 14:30:26 up 36 days, 20:35, 3 users, load average: 0.59, 1.09, 1.37
Tasks: 532 total, 4 running, 528 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.5%us, 1.2%sy, 0.0%ni, 87.5%id, 7.4%wa, 0.1%hi, 0.3%si, 0.0%st
Mem: 32960328k total, 32489652k used, 470676k free, 259284k buffers
Swap: 16876140k total, 77236k used, 16798904k free, 26004652k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8167 oracle 15 0 6151m 131m 122m S 10 0.4 0:00.46 oracle
14723 oracle 15 0 6150m 2.1g 2.1g R 4 6.8 1:20.46 oracle
24356 oracle -2 0 6160m 4.5g 4.5g S 3 14.4 148:25.96 oracle
24360 oracle -2 0 6160m 4.5g 4.5g S 3 14.4 145:54.39 oracle
15450 oracle 15 0 6152m 1.8g 1.7g S 3 5.6 0:34.34 oracle
2517 oracle 15 0 6150m 536m 528m S 2 1.7 0:16.67 oracle
24354 oracle 15 0 6160m 153m 140m S 2 0.5 21:09.91 oracle

get the top CPU utilize PID.

apply PID to below select

select x.inst_id,x.sid, x.serial#,x.USERNAME,x.osuser,x.MACHINE,x.TERMINAL,x.program,x.TYPE,x.sql_hash_value,x.module,y.sql_text
from gv$session x,gv$sqlarea y
where paddr in (select addr from gv$process where spid =
8167 )
and x.SQL_ADDRESS = y.address

Select the HASH value and apply below select.
select SQL_TEXT from v$sqlTEXT where HASH_VALUE in (2024423863) ORDER BY PIECE;

No comments:

Post a Comment