Problem solve Get help with specific problems with your technologies, process and projects.

Monitoring Oracle processes in Windows NT

This tip will help you identify the CPU usage of each thread of an Oracle process in Windows NT.

It's much easier to monitor CPU usage in a Unix environment for each individual Oracle process (i.e., PMON, SMON, DBWR) as compared to NT. In NT, there is only a single process (i.e., oracle.exe). In order to get the status of individual threads of Oracle processs in a Windows environment, use Quick Slice, a GUI-based standalone application. It's a free download from Microsoft. It works with Oracle8i and 9i in all Windows environments. Here is how to use it:

  1. First of all, you need to find the process id of all threads running in Oracle.
    SQL> select p.spid "Thread ID", "Background Process", s.username
    "User Name", 
                s.osuser "OS User", s.status "STATUS", s.sid "Session ID",
    s.serial# "Serial No.", 
                s.program "OS Program" 
         from v$process p, v$bgprocess b, v$session s   
         where s.paddr = p.addr and b.paddr(+) = p.addr; 

    Here is the output:

    Thread ID    Backg User Name  OS User    STATUS   Session ID Serial No.
    OS Program
    ------------ ----- ---------- ---------- -------- ---------- ----------
    20229        PMON             Oracle     ACTIVE            1          1 (PMON)
    20231        DBW0             Oracle     ACTIVE            2          1 (DBW0)
    20233        LGWR             Oracle     ACTIVE            3          1 (LGWR)
    20235        CKPT             Oracle     ACTIVE            4          1 (CKPT)
    20237        SMON             Oracle     ACTIVE            5          1 (SMON)
    20239        RECO             Oracle     ACTIVE            6          1 (RECO)
    20241        ARC0             Oracle     ACTIVE            7          1 (ARC0)
    20243        ARC1             Oracle     ACTIVE            8          1 (ARC1)
    20245        DMON             Oracle     ACTIVE            9          1 (DMON)
    18460              SYS        Oracle     ACTIVE           17      22737 (TNS V1-V3)
    15700                         Oracle     ACTIVE           12          7 (LNS0)

    In this example, thread 20229 is PMON and 20231 is DBW0, etc.

  2. Now doubleclick on the qslice.exe file under "c:Program FilesResource Kit."
  3. To display the individual threads of a process, find the process -- oracle.exe and double click on it.

    Another graphical window will pop up showing all of the threads and the cpu usage of each.

  4. To identify the threads, match up the TID column to the thread ID column of the previous SQL statement. To match the TID numbers with the Oracle thread process ID you will need to convert the TID number from HEX to DEC using a scientific calculator.

    The red bar displays kernel time taken by that thread; the blue bar displays user time.

Dig Deeper on Oracle database design and architecture

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.