* Find where v$osstat gets its info Linux (2.6.9-55.ELsmp), Oracle 10.2.0.4: #-f of strace to follow child of sqlplus, -s100 to display 100 chars of strings $ strace -f -s 100 -o outfilename sqlplus / as sysdba ... SQL> select * from v$osstat; STAT_NAME VALUE OSSTAT_ID ---------------------- ---------- ---------- NUM_CPUS 4 0 IDLE_TIME 367209830 1 BUSY_TIME 10783714 2 USER_TIME 9069069 3 SYS_TIME 1305359 4 IOWAIT_TIME 2021158 5 NICE_TIME 14442 6 RSRC_MGR_CPU_WAIT_TIME 0 14 LOAD .009765625 15 NUM_CPU_SOCKETS 2 17 PHYSICAL_MEMORY_BYTES 4140199936 1008 11 rows selected. vi outfilename: 16791 open("/proc/sys/kernel/shmmax", O_RDONLY) = 5 16791 read(5, "2147483648\n", 1024) = 11 ... 16791 open("/proc/meminfo", O_RDONLY) = 5 16791 read(5, "MemTotal: 4043164 kB\nMemFree: 783904 kB\nBuffers: 150600 kB\nCached: 1054848"..., 1024) = 672 ... 16791 open("/proc/stat", O_RDONLY) = 12 16791 read(12, "cpu 69594813 29274 15906702 4403285042 35804078 317694 3051660\ncpu0 22851242 5401 4484104 110043212"..., 1024) = 935 16791 read(12, "", 1024) = 0 ... 16791 open("/proc/cpuinfo", O_RDONLY) = 12 16791 read(12, "processor\t: 0\nvendor_id\t: GenuineIntel\ncpu family\t: 15\nmodel\t\t: 4\nmodel name\t: Intel("..., 1024) = 1024 ... 16791 open("/proc/loadavg", O_RDONLY) = 12 16791 read(12, "0.01 0.01 0.00 1/431 16791\n", 1024) = 27 ... Windows (XP), Oracle 10.2.0.1: SQL> select * from v$osstat; STAT_NAME VALUE OSSTAT_ID -------------------------------- ---------- NUM_CPUS 1 0 IDLE_TIME 1102001 1 BUSY_TIME 227669 2 USER_TIME 166838 3 SYS_TIME 60831 4 AVG_IDLE_TIME 1102001 7 AVG_BUSY_TIME 227669 8 AVG_USER_TIME 166838 9 AVG_SYS_TIME 60831 10 RSRC_MGR_CPU_WAIT_TIME 0 14 PHYSICAL_MEMORY_BYTES 535121920 1008 VM_IN_BYTES 127352832 1009 VM_OUT_BYTES 167641088 1010 13 rows selected. #1780 is oracle.exe pid and 1136 the thread id (spid of v$process) E:\>strace -p 1780 | grep " 1780 1136 " | grep NtQuerySystemInformation 152 1780 1136 NtQuerySystemInformation (Basic, 44, ... {Unknown=0,MaximumIncrement=100144,PhysicalPageSize=0x1000,NumberOfPhysicalPa ges=0x1fe55,LowestPhysicalPage=0x1,HighestPhysicalPage=0x1fec8,AllocationGranularity=0x10000,LowestUserAddress=0x10000,HighestUserAd dress=0x7ffeffff,ActiveProcessors=1,NumberProcessors=1,}, 0x0, ) == 0x0 153 1780 1136 NtQuerySystemInformation (Processor, 12, ... {system info, class 1, size 12}, 0x0, ) == 0x0 154 1780 1136 NtQuerySystemInformation (Performance, 312, ... {system info, class 2, size 312}, 0x0, ) == 0x0 ... 159 1780 1136 NtQuerySystemInformation (ProcessorTimes, 1536, ... {system info, class 8, size 500}, 0x0, ) == 0x0 ... 186 1780 1136 NtQuerySystemInformation (ProcessorTimes, 1536, ... {system info, class 8, size 500}, 0x0, ) == 0x0 ---------------------------------------------------------------------------------------------------- * Unacknowledhed bugs related to v$osstat On Linux, Oracle 10.2.0.1, 10.2.0.2 and 10.2.0.3 has a problem that PHYSICAL_MEMORY_BYTES is actually free memory in kilobytes. Can be easily verified by the above strace command.