프린트 하기

OS환경 : Oracle Linux6.8(64bit)


DB 환경 : Oracle Database 11.2.0.3


에러 : OS에서 top로 보았을때 DIA0 프로세스의 메모리 사용량이 과도하게 높음

top 명령으로 확인 후 ps -ef 로 프로세스 확인

1
2
3
4
5
6
$ top
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND
3712 oracle    20   0  19g 153m  19m S 80.1  0.7   6:12.52 oracle
 
$ ps -ef | grep 3712
oracle    3712     1  0 Feb01 ?        00:06:59 ora_dia0_ORCL

가상 메모리(VIRT)가 과도하게 할당되어 있고 시간이 지날수록 더 증가함을 확인


현재 pga 할당량 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL>
col name for a25
col pname for a12
col "MegaBytes" for a10
set numwidth 6
 
select ss.sid, p.pid, p.pname, sn.name, round(ss.value/(1024 *1024))||'Mb' "MegaBytes"
from v$sesstat ss, v$statname sn, v$session s, v$process p
where s.paddr = p.addr
and   sn.statistic# = ss.statistic#
and   s.sid = ss.sid
and   sn.name in ('session pga memory' , 'session pga memory max')
and   p.pname='DIA0'
order by ss.value
/
 
   SID      PID PNAME       NAME              MegaBytes
------ ------ ------------ ------------------------- ----------
    10       10 DIA0       session pga memory         825Mb
    10       10 DIA0       session pga memory max    825Mb
 
2 rows selected.



해결 방법 : 11.2.0.4버전으로 패치 또는 임시 패치 13377816 적용

패치를 못할 경우 임시 해결 방법은 피크 시간이 아닌 시간에 주기적으로 dia0 프로세스를 종료 해주는 방법이 있음



원인 : 오라클 자체 버그로 인한 문제




참조 : dia0 High Memory Usage (문서 ID 1376981.1)