Inhaltsverzeichnis

Speicherbedarf der DB Prozesse in Linux ermitteln

Prozessliste auswerten

Für welche Datenbank sind wieviele Anwenderprozesse gestartet

 ps -Af | grep oracle | awk '{ print $8 }' | sort | uniq -c | sort -nr
 
    118 oraclePIST
     87 oracleMYDB
     79 oracleMDG
     41 oracleBKGJ
     40 oracleIZTH
     37 oracleORCT
      9 oracleCONPT
      3 oracleZOI
      3 oracleTET
      2 oracleME
      2 oracleDERD

Standard Befehle

Einfache Standardbefehle unter linux um Load, Speicherverbrauch, Swap Verhalten zu überwachen

Speicher Bausteine auswerten

pmap

Beispiel : pmap -d
Ausgabe gekürzt:

20729
20729:   oracleCODFG (LOCAL=NO)
Address           Kbytes Mode  Offset           Device    Mapping
0000000000400000   92916 r-x-- 0000000000000000 068:00001 oracle
0000000005fbc000    6532 rw--- 0000000005abc000 068:00001 oracle
000000000661d000     644 rwx-- 000000000661d000 000:00000   [ anon ]
0000000060000000 1026048 rw-s- 0000000000000000 000:00006   [ shmid=0x270002 ]
0000002a95556000      84 r-x-- 0000000000000000 068:00001 ld-2.3.3.so
0000002a9556b000       4 rw--- 0000002a9556b000 000:00000   [ anon ]
0000002a9566a000      12 rw--- 0000000000014000 068:00001 ld-2.3.3.so
0000002a9566d000     148 r-x-- 0000000000000000 068:00001 libskgxp10.so
0000002a95692000    1024 ----- 0000000000025000 068:00001 libskgxp10.so
0000002a95792000       8 rw--- 0000000000025000 068:00001 libskgxp10.so
0000002a95794000       4 rw--- 0000002a95794000 000:00000   [ anon ]
.....
0000002a97c2b000    1020 ----- 0000000000009000 068:00001 libnss_files.so.2
0000002a97d2a000       8 rw--- 0000000000008000 068:00001 libnss_files.so.2
0000007fbffe4000     112 rwx-- 0000007fbffe4000 000:00000   [ stack ]
ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]
mapped: 1174036K    writeable/private: 11884K    shared: 1026048K

Jede „Shared Library“ wird zweimal angeführt.
Einmal für das Codesegment (Mode r-x–) und einmal für das Datensegment (Mode rw—) der Library.

Die Zeile „0000000060000000 1026048 rw-s- 0000000000000000 000:00006 [ shmid=0x270002 ]“ zeigt den Verweis auf die SGA (SGA_TARGET mit 1000M eingestellt) ?

Laut letzer Zeile „mapped: 1174036K writeable/private: 11884K shared: 1026048K“ verwendet der Prozess writeable/private 11884K Speicher für sich selbst

[ anon ] = Anonymous Memory (Anon) siehe manpage wie http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?pmap+1
Quelle: http://wiki.debianforum.de/LinuxSpeichermanagement
alles zusammenzählen:

ps -Af | grep CODA | awk '{print $2}'
pmap -d | grep writeable/private | awk '{print $4}'

nmon

Ähnlich wie top, aber deutlich mächtiger
Eigentlich für IBM Aix entworfen, gibt es aber auch für Linux
siehe http://www.ibm.com/developerworks/aix/library/au-analyze_aix/

Download für Linux unter http://nmon.sourceforge.net/pmwiki.php
auf Oracle Enterprise Linux v5.5 die OpenSuse11 Variante verwenden

ORA-00845: MEMORY_TARGET not supported on this system

ORA-00845 oder Eintrag in Alert Log

WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 4093640704 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 2279227392 and used is 4163223552 bytes. Ensure that the mount point is /dev/shm for this directory.
memory_target needs larger /dev/shm

Ursache:

Überprüfen:

$ df -h /dev/shm
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 6.0G  3.9G  2.2G  65% /dev/shm

Hinzufügen als root

mount -t tmpfs shmfs -o size=30g /dev/shm

oder vergrößern mit

mount -o remount,size=30G /dev/shm

in fstab eintragen:

tmpfs                   /dev/shm                tmpfs   size=30g        0 0

Quellen