Oracle内存进程组成
一个oracle进程使用的内存包含私有内存和共享内存。
共享内存 (sga)
公共类库 (包含public和private)
私有数据 (指DATA或heap)
执行程序 (TEXT)
匿名物理内存 [anon] (程序申请的内存,也被显示为anon,这些内存找不到对应的文件)
一个oracle process (oracle 10g Linux 64bit)大概分配5-6m私有内存
Linux下Oracle的内存使用情况
在linux下我们可以使用ps,top,pmap,/proc/$PID工具来查看内存使用情况。
使用ps
-
ps aux
-
-
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
-
...
-
1101 30486 0.0 0.5 2239672 22344 ? Ss 15:20 0:00 oracletest (LOC
-
...
VSZ:总共使用的内存是2,239,672=2187M,这里包含了共享内存。
使用top
-
top -p 30486
-
-
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
-
30486 oracle10 15 0 2187m 21m 18m S 0.0 0.6 0:00.03 oracle
VIRT: 总共使用内存2187M,这里包含共享内存。
使用pmap
pmap -x 30486
-
[test@dbs01 ~]$ pmap -x 30486
-
30486: oracletest (LOCAL=NO)
-
Address Kbytes RSS Anon Locked Mode Mapping
-
0000000000400000 100352 - - - r-x-- oracle <--TEXT
-
0000000006600000 544 - - - rw--- oracle <--TEXT
-
0000000006688000 680 - - - rwx-- [ anon ]
-
0000000060000000 2099200 - - - rw-s- [ shmid=0x60006 ] <--SGA
-
0000002a95556000 4 - - - rw--- [ anon ]
-
0000002a95557000 164 - - - r-x-- libskgxp10.so
-
0000002a95580000 1024 - - - ----- libskgxp10.so
-
0000002a95680000 8 - - - rw--- libskgxp10.so
-
0000002a95682000 4 - - - rw--- [ anon ]
-
0000002a95683000 944 - - - r-x-- libhasgen10.so
-
0000002a9576f000 1020 - - - ----- libhasgen10.so
-
0000002a9586e000 28 - - - rw--- libhasgen10.so
-
0000002a95875000 16 - - - rw--- [ anon ]
-
0000002a95879000 8 - - - r-x-- libskgxn2.so
-
0000002a9587b000 1020 - - - ----- libskgxn2.so
-
0000002a9597a000 4 - - - rw--- libskgxn2.so
-
0000002a9597b000 428 - - - r-x-- libocr10.so
-
0000002a959e6000 1024 - - - ----- libocr10.so
-
0000002a95ae6000 8 - - - rw--- libocr10.so
-
0000002a95ae8000 4 - - - rw--- [ anon ]
-
0000002a95ae9000 256 - - - r-x-- libocrb10.so
-
0000002a95b29000 1024 - - - ----- libocrb10.so
-
0000002a95c29000 4 - - - rw--- libocrb10.so
-
0000002a95c2a000 444 - - - r-x-- libocrutl10.so
-
0000002a95c99000 1020 - - - ----- libocrutl10.so
-
0000002a95d98000 20 - - - rw--- libocrutl10.so
-
0000002a95d9d000 8 - - - rw--- [ anon ]
-
0000002a95d9f000 8492 - - - r-x-- libjox10.so
-
0000002a965ea000 1020 - - - ----- libjox10.so
-
0000002a966e9000 1568 - - - rw--- libjox10.so
-
0000002a96871000 4 - - - rw--- [ anon ]
-
0000002a96872000 32 - - - r-x-- libclsra10.so
-
0000002a9687a000 1024 - - - ----- libclsra10.so
-
0000002a9697a000 4 - - - rw--- libclsra10.so
-
0000002a9697b000 112 - - - r-x-- libdbcfg10.so
-
0000002a96997000 1024 - - - ----- libdbcfg10.so
-
0000002a96a97000 8 - - - rw--- libdbcfg10.so
-
0000002a96a99000 3004 - - - r-x-- libnnz10.so
-
0000002a96d88000 1020 - - - ----- libnnz10.so
-
0000002a96e87000 708 - - - rw--- libnnz10.so
-
0000002a96f38000 4 - - - rw--- [ anon ]
-
0000002a96f59000 4 - - - rw--- [ anon ]
-
0000002a96f5a000 4 - - - r-x-- libaio.so.1.0.1
-
0000002a96f5b000 1020 - - - ----- libaio.so.1.0.1
-
0000002a9705a000 4 - - - rw--- libaio.so.1.0.1
-
0000002a9705b000 1044 - - - rw--- [ anon ]
-
0000002a97160000 16 - - - r-x-- libnuma.so.1
-
0000002a97164000 1020 - - - ----- libnuma.so.1
-
0000002a97263000 4 - - - rw--- libnuma.so.1
-
0000002a97264000 428 - - - rw--- [ anon ]
-
0000002a972d6000 40 - - - rw--- zero
-
0000002a972e0000 64 - - - rw--- zero
-
0000002a972f0000 64 - - - rw--- zero
-
0000002a97300000 64 - - - rw--- zero
-
0000002a97310000 64 - - - rw--- zero
-
0000002a97320000 64 - - - rw--- zero
-
0000002a97330000 64 - - - rw--- zero
-
0000002a97340000 88 - - - rw--- zero
-
0000002a97376000 40 - - - r-x-- libnss_files-2.3.4.so
-
0000002a97380000 1024 - - - ----- libnss_files-2.3.4.so
-
0000002a97480000 4 - - - r---- libnss_files-2.3.4.so
-
0000002a97481000 4 - - - rw--- libnss_files-2.3.4.so
-
0000003300800000 84 - - - r-x-- ld-2.3.4.so
-
0000003300914000 4 - - - r---- ld-2.3.4.so
-
0000003300915000 4 - - - rw--- ld-2.3.4.so
-
0000003300a00000 1212 - - - r-x-- libc-2.3.4.so
-
0000003300b2f000 1024 - - - ----- libc-2.3.4.so
-
0000003300c2f000 12 - - - r---- libc-2.3.4.so
-
0000003300c32000 8 - - - rw--- libc-2.3.4.so
-
0000003300c34000 20 - - - rw--- [ anon ]
-
0000003300d00000 8 - - - r-x-- libdl-2.3.4.so
-
0000003300d02000 1020 - - - ----- libdl-2.3.4.so
-
0000003300e01000 4 - - - r---- libdl-2.3.4.so
-
0000003300e02000 4 - - - rw--- libdl-2.3.4.so
-
0000003300f00000 532 - - - r-x-- libm-2.3.4.so
-
0000003300f85000 1020 - - - ----- libm-2.3.4.so
-
0000003301084000 4 - - - r---- libm-2.3.4.so
-
0000003301085000 4 - - - rw--- libm-2.3.4.so
-
0000003301500000 64 - - - r-x-- libpthread-2.3.4.so
-
0000003301510000 1020 - - - ----- libpthread-2.3.4.so
-
000000330160f000 4 - - - r---- libpthread-2.3.4.so
-
0000003301610000 4 - - - rw--- libpthread-2.3.4.so
-
0000003301611000 16 - - - rw--- [ anon ]
-
0000003308800000 84 - - - r-x-- libnsl-2.3.4.so
-
0000003308815000 1020 - - - ----- libnsl-2.3.4.so
-
0000003308914000 4 - - - r---- libnsl-2.3.4.so
-
0000003308915000 4 - - - rw--- libnsl-2.3.4.so
-
0000003308916000 8 - - - rw--- [ anon ]
-
0000007fbffef000 68 - - - rwx-- [ stack ]
-
ffffffffff600000 4 - - - r-x-- [ anon ]
-
---------------- ------ ------ ------ ------
-
total kB 2239676 - - -
-
[test@dbs01 ~]$
Oracle执行程序(TEXT)的大小是100,352+544=98.5M
共享内存(SGA [ shmid=0x60006 ]):2,099,200=2,050M
通过ipcs来得到共享内存。
-
[test@dbs01 ~]$ ipcs -m
-
-
------ Shared Memory Segments --------
-
key shmid owner perms bytes nattch status
-
0xa3c20e68 360453 grid 660 4096 0
-
0xb610e394 393222 test 640 2149580800 30
使用pmap的-d选项
-
[test@dbs01 ~]$ pmap -d 30486
-
30486: oracletest (LOCAL=NO)
-
Address Kbytes Mode Offset Device Mapping
-
0000000000400000 100352 r-x-- 0000000000000000 008:00013 oracle
-
0000000006600000 544 rw--- 0000000006200000 008:00013 oracle
-
0000000006688000 680 rwx-- 0000000006688000 000:00000 [ anon ]
-
0000000060000000 2099200 rw-s- 0000000000000000 000:00006 [ shmid=0x60006 ]
-
0000002a95556000 4 rw--- 0000002a95556000 000:00000 [ anon ]
-
0000002a95557000 164 r-x-- 0000000000000000 008:00013 libskgxp10.so
-
0000002a95580000 1024 ----- 0000000000029000 008:00013 libskgxp10.so
-
0000002a95680000 8 rw--- 0000000000029000 008:00013 libskgxp10.so
-
0000002a95682000 4 rw--- 0000002a95682000 000:00000 [ anon ]
-
0000002a95683000 944 r-x-- 0000000000000000 008:00013 libhasgen10.so
-
0000002a9576f000 1020 ----- 00000000000ec000 008:00013 libhasgen10.so
-
0000002a9586e000 28 rw--- 00000000000eb000 008:00013 libhasgen10.so
-
0000002a95875000 16 rw--- 0000002a95875000 000:00000 [ anon ]
-
0000002a95879000 8 r-x-- 0000000000000000 008:00013 libskgxn2.so
-
0000002a9587b000 1020 ----- 0000000000002000 008:00013 libskgxn2.so
-
0000002a9597a000 4 rw--- 0000000000001000 008:00013 libskgxn2.so
-
0000002a9597b000 428 r-x-- 0000000000000000 008:00013 libocr10.so
-
0000002a959e6000 1024 ----- 000000000006b000 008:00013 libocr10.so
-
0000002a95ae6000 8 rw--- 000000000006b000 008:00013 libocr10.so
-
0000002a95ae8000 4 rw--- 0000002a95ae8000 000:00000 [ anon ]
-
0000002a95ae9000 256 r-x-- 0000000000000000 008:00013 libocrb10.so
-
0000002a95b29000 1024 ----- 0000000000040000 008:00013 libocrb10.so
-
0000002a95c29000 4 rw--- 0000000000040000 008:00013 libocrb10.so
-
0000002a95c2a000 444 r-x-- 0000000000000000 008:00013 libocrutl10.so
-
0000002a95c99000 1020 ----- 000000000006f000 008:00013 libocrutl10.so
-
0000002a95d98000 20 rw--- 000000000006e000 008:00013 libocrutl10.so
-
0000002a95d9d000 8 rw--- 0000002a95d9d000 000:00000 [ anon ]
-
0000002a95d9f000 8492 r-x-- 0000000000000000 008:00013 libjox10.so
-
0000002a965ea000 1020 ----- 000000000084b000 008:00013 libjox10.so
-
0000002a966e9000 1568 rw--- 000000000084a000 008:00013 libjox10.so
-
0000002a96871000 4 rw--- 0000002a96871000 000:00000 [ anon ]
-
0000002a96872000 32 r-x-- 0000000000000000 008:00013 libclsra10.so
-
0000002a9687a000 1024 ----- 0000000000008000 008:00013 libclsra10.so
-
0000002a9697a000 4 rw--- 0000000000008000 008:00013 libclsra10.so
-
0000002a9697b000 112 r-x-- 0000000000000000 008:00013 libdbcfg10.so
-
0000002a96997000 1024 ----- 000000000001c000 008:00013 libdbcfg10.so
-
0000002a96a97000 8 rw--- 000000000001c000 008:00013 libdbcfg10.so
-
0000002a96a99000 3004 r-x-- 0000000000000000 008:00013 libnnz10.so
-
0000002a96d88000 1020 ----- 00000000002ef000 008:00013 libnnz10.so
-
0000002a96e87000 708 rw--- 00000000002ee000 008:00013 libnnz10.so
-
0000002a96f38000 4 rw--- 0000002a96f38000 000:00000 [ anon ]
-
0000002a96f59000 4 rw--- 0000002a96f59000 000:00000 [ anon ]
-
0000002a96f5a000 4 r-x-- 0000000000000000 008:00002 libaio.so.1.0.1
-
0000002a96f5b000 1020 ----- 0000000000001000 008:00002 libaio.so.1.0.1
-
0000002a9705a000 4 rw--- 0000000000000000 008:00002 libaio.so.1.0.1
-
0000002a9705b000 1044 rw--- 0000002a9705b000 000:00000 [ anon ]
-
0000002a97160000 16 r-x-- 0000000000000000 008:00002 libnuma.so.1
-
0000002a97164000 1020 ----- 0000000000004000 008:00002 libnuma.so.1
-
0000002a97263000 4 rw--- 0000000000003000 008:00002 libnuma.so.1
-
0000002a97264000 428 rw--- 0000002a97264000 000:00000 [ anon ]
-
0000002a972d6000 40 rw--- 0000000000000000 000:0000d zero
-
0000002a972e0000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a972f0000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a97300000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a97310000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a97320000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a97330000 64 rw--- 0000000000000000 000:0000d zero
-
0000002a97340000 88 rw--- 000000000006a000 000:0000d zero
-
0000002a97376000 40 r-x-- 0000000000000000 008:00002 libnss_files-2.3.4.so
-
0000002a97380000 1024 ----- 000000000000a000 008:00002 libnss_files-2.3.4.so
-
0000002a97480000 4 r---- 000000000000a000 008:00002 libnss_files-2.3.4.so
-
0000002a97481000 4 rw--- 000000000000b000 008:00002 libnss_files-2.3.4.so
-
0000003300800000 84 r-x-- 0000000000000000 008:00002 ld-2.3.4.so
-
0000003300914000 4 r---- 0000000000014000 008:00002 ld-2.3.4.so
-
0000003300915000 4 rw--- 0000000000015000 008:00002 ld-2.3.4.so
-
0000003300a00000 1212 r-x-- 0000000000000000 008:00002 libc-2.3.4.so
-
0000003300b2f000 1024 ----- 000000000012f000 008:00002 libc-2.3.4.so
-
0000003300c2f000 12 r---- 000000000012f000 008:00002 libc-2.3.4.so
-
0000003300c32000 8 rw--- 0000000000132000 008:00002 libc-2.3.4.so
-
0000003300c34000 20 rw--- 0000003300c34000 000:00000 [ anon ]
-
0000003300d00000 8 r-x-- 0000000000000000 008:00002 libdl-2.3.4.so
-
0000003300d02000 1020 ----- 0000000000002000 008:00002 libdl-2.3.4.so
-
0000003300e01000 4 r---- 0000000000001000 008:00002 libdl-2.3.4.so
-
0000003300e02000 4 rw--- 0000000000002000 008:00002 libdl-2.3.4.so
-
0000003300f00000 532 r-x-- 0000000000000000 008:00002 libm-2.3.4.so
-
0000003300f85000 1020 ----- 0000000000085000 008:00002 libm-2.3.4.so
-
0000003301084000 4 r---- 0000000000084000 008:00002 libm-2.3.4.so
-
0000003301085000 4 rw--- 0000000000085000 008:00002 libm-2.3.4.so
-
0000003301500000 64 r-x-- 0000000000000000 008:00002 libpthread-2.3.4.so
-
0000003301510000 1020 ----- 0000000000010000 008:00002 libpthread-2.3.4.so
-
000000330160f000 4 r---- 000000000000f000 008:00002 libpthread-2.3.4.so
-
0000003301610000 4 rw--- 0000000000010000 008:00002 libpthread-2.3.4.so
-
0000003301611000 16 rw--- 0000003301611000 000:00000 [ anon ]
-
0000003308800000 84 r-x-- 0000000000000000 008:00002 libnsl-2.3.4.so
-
0000003308815000 1020 ----- 0000000000015000 008:00002 libnsl-2.3.4.so
-
0000003308914000 4 r---- 0000000000014000 008:00002 libnsl-2.3.4.so
-
0000003308915000 4 rw--- 0000000000015000 008:00002 libnsl-2.3.4.so
-
0000003308916000 8 rw--- 0000003308916000 000:00000 [ anon ]
-
0000007fbffef000 68 rwx-- 0000007fbffef000 000:00000 [ stack ]
-
ffffffffff600000 4 r-x-- 0000000000000000 000:00000 [ anon ]
-
mapped: 2239676K writeable/private: 5768K shared: 2099200K
这里列出了私有内存5768K,你也可以从源代码中看到如果获得shared内存,私有内存,总共内存。
http://web.hexapodia.org/~adi/pmap.c
-
...
-
sprintf(fname, "/proc/%ld/maps", (long)pid);
-
...
-
if(perm[3] == 'p') {
-
if(perm[1] == 'w')
-
writable += size;
-
} else if(perm[3] == 's')
-
shared += size;
-
else
-
die("unable to parse permission string: '%s'\n", perm);
-
n = printf("%08lx (%ld KB)", begin, (end - begin)/1024);
-
n += printf("%*s %s (%s %ld) ", 22-n, "", perm, dev, inode);
-
printf("%*s %s\n", 44-n, "", mapname);
-
}
-
printf("mapped: %ld KB writable/private: %ld KB shared: %ld KB\n",
-
total/1024, writable/1024, shared/1024);
-
fclose(f);
直接使用目录proc中的文件:
-
[test@dbs01 30486]$ more /proc/30486/status
-
Name: oracle
-
State: S (sleeping)
-
SleepAVG: 98%
-
Tgid: 30486
-
Pid: 30486
-
PPid: 1
-
TracerPid: 0
-
Uid: 1101 1101 1101 1101
-
Gid: 501 501 501 501
-
FDSize: 64
-
Groups: 500 501 1200 1201 1202 1301
-
VmSize: 2239672 kB
-
VmLck: 0 kB
-
VmRSS: 22344 kB
-
VmData: 2244 kB ---> data
-
VmStk: 68 kB
-
VmExe: 100349 kB ---> oracle exe
-
VmLib: 15995 kB ---> lib
-
StaBrk: 066ad000 kB
-
Brk: 06732000 kB
-
StaStk: 7fbffff650 kB
-
Threads: 1
-
SigPnd: 0000000000000000
-
ShdPnd: 0000000000000000
-
SigBlk: 0000000000000000
-
SigIgn: 0000000006005207
-
SigCgt: 00000001c9802cf8
-
CapInh: 0000000000000000
-
CapPrm: 0000000000000000
-
CapEff: 0000000000000000
-
[test@dbs01 30486]$
这个网站有关输出的说明:http://www.linux-ren.org/modules/newbb/viewtopic.php?topic_id=722
从这里看到:
VMEXE: Oracle执行程序(TEXT)的大小是100,349+544=97.99M
VMDATA: 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm) = 2,244Kb
VMLIB: 被映像到任务的虚拟内存空间的库的大小 (exec_lib) 15,995KB
输出解释
参数 解释
Name 应用程序或命令的名字
State 任务的状态,运行/睡眠/僵死/
SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。
Tgid 线程组号
Pid 任务ID
Ppid 父进程ID
TracerPid 接收跟踪该进程信息的进程的ID号
Uid Uid euid suid fsuid
Gid Gid egid sgid fsgid
FDSize 文件描述符的最大个数,file->fds
Groups
VmSize(KB) 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页
VmLck(KB) 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)
VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)
VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm)
VmStk(KB) 任务在用户态的栈的大小 (stack_vm)
VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)
VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib)
VmPTE 该进程的所有页表的大小,单位:kb
Threads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。
SigQ 待处理信号的个数
SigPnd 屏蔽位,存储了该线程的待处理信号
ShdPnd 屏蔽位,存储了该线程组的待处理信号
SigBlk 存放被阻塞的信号
SigIgn 存放被忽略的信号
SigCgt 存放被俘获到的信号
CapInh Inheritable,能被当前进程执行的程序的继承的能力
CapPrm Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性
CapEff Effective,进程的有效能力
从oracle数据库的视图来看:
-
select sn.name, st.value from v$sesstat st, v$statname sn
-
where st.statistic# in (20,21,25,26,349)
-
and st.statistic# = sn.statistic#
-
and st.sid = 516
-
;
-
NAME VALUE
-
---------------------------------------------------------------- ----------
-
session uga memory 224176
-
session uga memory max 224176
-
session pga memory 573528
-
session pga memory max 573528
-
sorts (memory) 4
pga的大小是500K
-
select spid, username, pga_used_mem, pga_alloc_mem, pga_max_mem from v$process where addr = '00000000DF694EE0';
-
SQL> select spid, username, pga_used_mem, pga_alloc_mem, pga_max_mem from v$process where addr = '00000000DF694EE0';
-
-
SPID USERNAME PGA_USED_MEM PGA_ALLOC_MEM PGA_MAX_MEM
-
------------ --------------- ------------ ------------- -----------
-
30486 test 401213 643277 643277
pga的大小是600K
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25105315/viewspace-692671/
,如需转载,请注明出处,否则将追究法律责任。