SHARED POOL SIZE의 계산
SHARED POOL SIZE의 계산
Bulletin no : 10393
--------------------------------------------------------------------------------
오라클 instance를 background process + SGA라고 말할 때 처음 instance가
기동되면 SGA가 할당된다. 이 때 이 SGA를 구성하는 메모리 영역은 크게
3부분으로 구성된다고 할 수있다.
- Shared pool, Redo log buffer, DB buffer cache.
여기서는 SGA를 구성하는 shared pool의 size를 시스템에 맞게 산출하는
방법에 대해서 알아본다.
Shared pool 영역 구성은 MTS 방식으로 접속된 session의 PGA, Shared SQL
area 그리고 dynamic하게 할당되는 data structure로 구성된다.
1. Shared Pool
Shared pool은 ?/dbs/initSID.ora(parameter file)의 SHARED_POOL_SIZE라는
parameter로 그 크기를 지정하는데 default값은 3.5M를 갖게 된다.
일반적으로 shared pool이 얼마나 사용되는가 하는 문제는 application
dependent하므로 각 application을 조사하는 게 필요하다.
시스템에서 필요로 하는 크기를 검사하기 위해 아주 큰 크기로 parameter file에
지정하여 dynamic하게 할당되는 SGA가 충분히 큰 값을 갖게 한 후,검사가 끝난
다음 아래에서 계산된 size로 변경 해 주도록 한다.
2. 계산 공식
Session 당 최대 메모리 사용량(Max Session Memory)
* 동시 접속하는 User의 수
+ Shared SQL 영역으로 사용되는 메모리 양
+ Shared PLSQL을 위해 사용하는 메모리 영역
+ 최소 30%의 여유 공간
= Minimum Shared Pool
3. 계산 예제
(1) 적당한 user session에 대한 session id를 찾는다.
SQLDBA> select sid from v$process p, v$session s
2 where p.addr=s.paddr and s.username='SCOTT';
SID
----------
29
1 rows selected.
(2) 이 session id에 대한 maximum session memory를 찾는다.
SQLDBA> select value from v$sesstat s, v$statname n
2 where s.statistic# = n.statistic#
3 and n.name = 'session uga memory max' and sid=29;
VALUE
-----------
273877
1 rows selected.
(3) Total shared SQL area를 구한다.
SQLDBA> select sum(sharable_mem) from v$sqlarea;
SUM(SHARAB
------------------
8936625
1 row selected.
(4) PLSQL sharable memory area를 구한다.
SQLDBA> select sum(sharable_mem) from v$db_object_cache;
SUM(SHARAB
------------------
4823537
1 row selected.
(5) Shared pool size를 계산한다.
274K shared memory * 400 users
+ 9M Shared SQL Area
+ 5M PLSQL Sharable Memory
+ 60M Free Space (30%)
= 184M Shared Pool
이 예제에서는 Shared pool의 size는 184M가 적당하다고 할수있다.
4. Shared Memory부족 (ORA 4031)에 대한 대처
Ora-4031이 발생하는 원인은 2가지이다. 첫째 절대적으로 shared pool size가
작아서 나는 경우와, 둘째로 memory는 있으나 적재하려 하는 PL/SQL package가
너무커서 연속된 shared pool영역을 점유 하지 못하는 경우가 있다.
만일 첫번의 경우 라면 적당한 계산 과정으로 계산하여 parameter file에서
SHARED_POOL_SIZE를 늘려주고 ,두 번째 경우라면 다음과 같은 방법으로 에러를
피해 갈 수 있다.- "Sys.dbms_shared_pool.keep" procedure사용.
[참고] 위 package를 사용하려면 ?/rdbms/admin/dbmspool.sql,prvtpool.plb를
수행시켜 package를 create시킨 후 사용한다.
(자세한 사항은 bulletin 10095,Oracle7 Server Tuning 4장 12를 참조한다.)
기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… | 12-27 | 1786 | ||
[채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1302 | ||
53 | [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… | 03-15 | 1043 | |
52 | [주말주간]C#, ASP.NET마스터 | 01-31 | 1201 | |
51 | [평일,기업100%환급]SQL기초에서 Schema Object까지 | 01-31 | 1001 | |
50 | [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 | 01-31 | 900 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 | 01-19 | 1202 | |
48 | [평일주간,평일야간,주말]안드로이드개발자과정 | 01-11 | 1067 | |
47 | [평일야간,주말주간]JAVA,Network&WEB&Framework | 01-03 | 1546 | |
46 | 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… | 12-27 | 1786 | |
45 | [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… | 12-19 | 1314 | |
44 | 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) | 12-14 | 1305 | |
43 | [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1302 | |
42 | [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 | 12-09 | 1045 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1210 | |
40 | [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… | 12-01 | 1419 | |
39 | [평일야간,주말,주말야간]SQL기초에서실무까지(SQL기초,PLSQL,힌… | 12-01 | 920 |
댓글 없음:
댓글 쓰기