I just published a new script and article about calculating the real Oracle process memory usage on Solaris.
The problem with V$PROCESS* views (and the V$SESSTAT) is that they will tell you what Oracle thinks it’s using, not the real amount of memory used. There will be discrepancies due how memory is actually allocated in OS, libraries out of Oracle’s control, the static memory areas inside Oracle binary and of course bugs.
I was working on one of such problems and decided to make my life easier by writing the script. It’s not so much about calculating the exact figures (they will never be 100% correct), but more about presenting the memory usage data in a better and more convenient fashion.
The script is called procmm and stands for Process Memory Matrix as it shows the memory usage in a matrix grid.
Here’s an example output to show what I’m talking about:
oracle@solaris02:~/research/memory$ ./procmm.sh -t `pgrep -f ora_.*SOL102` -- procmm.sh: Process Memory Matrix v1.01 by Tanel Poder ( http://tech.e2sn.com ) -- All numbers are shown in kilobytes Total PIDs 17, working: ................. PID SEGMENT_TYPE VIRTUAL RSS ANON LOCKED SWAP_RSVD ------ -------------------- ------------ ------------ ------------ ------------ ------------ 0 lib 389844 388796 13180 0 17816 0 oracle 1629064 1628908 3336 0 42012 0 ism_shmid=0x1d 6963336 6963336 0 6963336 0 0 hc_SOL102.dat 48 48 0 0 0 0 anon 32936 15936 15452 0 32868 0 stack 1660 1628 1592 0 1660 0 heap 37004 18016 16844 0 37004 ------ -------------------- ------------ ------------ ------------ ------------ ------------ 0 TOTAL(kB) 9053892 9016668 50404 6963336 131360
And here’s the full article and in there a link to the script:
Comments are welcome here, as I haven’t set up commenting on my other site yet…