2014년 9월 9일 화요일

SHARED POOL SIZE의 계산[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

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-271786
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111302
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151043
52 [주말주간]C#, ASP.NET마스터 오라클자바…01-311201
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311001
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-31900
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191202
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111067
47 [평일야간,주말주간]JAVA,Network&WEB&Framework 오라클자바…01-031546
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… 오라클자바…12-271786
45 [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… 오라클자바…12-191314
44 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) 오라클자바…12-141305
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111302
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091045
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011210
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011419
39 [평일야간,주말,주말야간]SQL기초에서실무까지(SQL기초,PLSQL,힌… 오라클자바…12-01920

댓글 없음:

댓글 쓰기