Hi guys,
On my CentOS 6.6 system with Oracle 12c, a system that takes VERY limited load (used for dev and testing), when I start the instance, the taken physical memory is around 3.3GB. Then it starts fluctuating between 3.3GB and 7.5GB, for no apparent reason. This fluctuation takes please even when noone is using it at all. Then overnight it stabilizes close to the limit, 7.9GB and stays there. I can't understand why it does that. Running "top" every 5sec (and comparing the 3.3GB state to the 7.8GB state) shows all top-memory processes at roughly the same occupancy, I can't see any process that has increased its footprint. The system runs Oracle and Tomcat appserver, nothing else. Tomcat is also completely stable.
top - 10:37:00 up 1 day, 11 min, 3 users, load average: 0.07, 0.07, 0.04
Tasks: 197 total, 1 running, 196 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.7%us, 2.8%sy, 0.0%ni, 90.2%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8001.801M total, 7837.074M used, 164.727M free, 25.270M buffers
Swap: 1999.996M total, 211.957M used, 1788.039M free, 1087.617M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1996 tomcat 20 0 4142m 1.1g 7184 S 0.0 14.1 17:26.92 java
4441 oracle 20 0 1372m 255m 252m S 0.0 3.2 0:10.83 ora_dbw0_oradb2
13891 oracle 20 0 1389m 232m 225m S 0.0 2.9 53:04.55 oracle_13891_or
21487 oracle 20 0 1368m 145m 140m S 0.0 1.8 0:05.80 oracle_21487_or
21847 oracle 20 0 1368m 143m 139m S 0.0 1.8 0:11.38 oracle_21847_or
4455 oracle 20 0 1380m 137m 121m S 0.0 1.7 0:40.79 ora_mmon_oradb2
4429 oracle 20 0 1364m 123m 123m S 0.0 1.5 0:03.78 ora_mman_oradb2
21829 oracle 20 0 1369m 123m 118m S 0.0 1.5 0:05.38 oracle_21829_or
4492 oracle 20 0 1375m 104m 94m S 0.0 1.3 0:22.76 ora_cjq0_oradb2
21844 oracle 20 0 1368m 100m 96m S 0.0 1.3 0:06.33 oracle_21844_or
I have the following settings:
AUTO memory management
kernel.small = 16TB (default value, I don't know why it's so large)
RAM=8GB
$ df /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 7340032 943088 6396944 13% /dev/shm
pre_page_sga | boolean | |
sga_max_size | big integer 1G |
sga_target | big integer 0 |
memory_max_target big integer 4G
memory_target big integer 1536M
The activity is so low that a query on v$resource_limit gives consistently something like this:
RESOURCE_NAME | CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCA LIMIT_VALUE | CON_ID |
------------------------ ------------------- --------------- -------------- -------------- ----------
processes | 44 | 188 | 500 | 500 | 0 |
sessions | 47 | 191 | 772 | 772 | 0 |
enqueue_locks | 26 | 173 | 9020 | 9020 | 0 |
enqueue_resources | 16 | 45 | 3616 | UNLIMITED | 0 |
For SGA (v$sgastat):
------------- -------- --------
db_cache_size | 584 | 584 |
shared pool | 336 | 278 |
java pool | 48 |
| 19 | 19 |
large pool | 8 | 1 |
log_buffer | 5 | 5 |
| -------- -------- |
sum | 1,000 | 886 |
For PGA (v$pgastat):
aggregate PGA target parameter 536
aggregate PGA auto target 435
global memory bound 100
total PGA inuse 54
total PGA allocated 93
maximum PGA allocated 359
total freeable PGA memory 27
PGA memory freed back to OS 8432
total PGA used for auto workareas 0
maximum PGA used for auto workareas 11
total PGA used for manual workareas 0
maximum PGA used for manual workareas 1
bytes processed 24435
extra bytes read/written 0
Please help me reach a sane selection of memory settings for this system. I'm new to Oracle and I have to make do without formal training, regrettably.
Thanks a lot,
George