Using QSlice one can monitor CPU usage for individual thread on a windows box. Qslice can be downloaded from the following url http://www.microsoft.com/downloads/en/details.aspx?familyid=6247BB76-13C5-4E0E-B800-53DC1B84A94C&displaylang=en
By clicking on the oracle.exe in Qslice it displays all threads and CPU usage for each thread, so using the following SQL you can match the corresponding SID.
SQL> select to_char(p.spid, 'xxxxxxxx') threadid, s.sid, s.username, s.program
from v$process p, v$session s
where p.addr=s.paddr;
Sample output:
THREADID SID USERNAME PROGRAM
——— ———- —————————— ————————-
d90 125 ORACLE.EXE (PMON)
1728 187 ORACLE.EXE (VKTM)
1660 1 ORACLE.EXE (GEN0)
d84 64 ORACLE.EXE (DIAG)
1794 126 ORACLE.EXE (DBRM)
144c 188 ORACLE.EXE (PSP0)
…