Home | Print | Q/A | Guest | NewsLetter
Display context of search results Case-sensitive searching
Database System
Data Warehouse
Data Analysis
Operating System
Open Source
Enterprise Architecture
Software Engineering
Process
Working Smart

SQL Server
PostgreSQL
Oracle
DB2
Teradata
MySQL
Performance Tuning
Programming

Link
Philosophy
Tools
Misc
주인놈
_
_
SideBar Edit
Describe SharedPoolSize예상 here

CREATE OR REPLACE FUNCTION calc_shared_pool(max_users IN NUMBER)
RETURN NUMBER
IS
    --------------------------------------------------
    -- 반드시 as sysdba 권한을 가진 사용자로 접속한다. 
    --------------------------------------------------
    
    session_id NUMBER;     --sample session id
    session_uga_max NUMBER; -- session uga_memory max
    sql_area NUMBER;
    plsql_area NUMBER;
    temp NUMBER;
BEGIN
     -- 하나의 세션이 가지는 메모리에 대한 샘플 세션을 가져온다. 
     SELECT id INTO session_id
     FROM (SELECT sid AS id
           FROM  v$process p, v$session s
           WHERE p.addr = s.paddr
           ORDER BY dbms_random.VALUE)
     WHERE ROWNUM = 1;
      --dbms_output.put_line('샘플 세션 ID : ' || session_id);
      
      --해당 세션에 가질 수 있는 최대 메모리
      SELECT VALUE INTO session_uga_max
      FROM v$sesstat s, v$statname n
      WHERE s.statistic# = n.statistic#
      AND n.NAME = 'session uga memory max'
      AND sid = session_id;
      --dbms_output.put_line('해당 세션에 가질 수 있는 최대 메모리 : ' || session_uga_max);
      
      --Total Shared SQL Area
      SELECT SUM(sharable_mem) INTO sql_area
      FROM v$sqlarea;
      
      --PL/SQL Sharable Memory Area
      SELECT SUM(sharable_mem) INTO plsql_area
      FROM v$db_object_cache;
      
      --최소 Shared Pool Size 계산 
      temp := (session_uga_max * max_users) + sql_area + plsql_area;

      RETURN CEIL((temp + temp*0.3)/1024/1024);
END;
/

--Shared Pool의 크기는 이제부터다. 
--Shared Pool 크기 계산을 위한 임시테이블을 생성후 주기적으로  아래와 같은
--Insert ~ Select 문을 이용해서 삽입한후 마지막으로 가장 큰 값을 찾아낸다. 

CREATE TABLE temp_shared_pool_size(nSIZE NUMBER);

INSERT INTO temp_shared_pool_size
SELECT calc_shared_pool(400) "최소 Shared Pool Size(MB)" 
FROM dual;

--이 결과는 Shared Pool의 최소 크기임을 명심해야 한다. 되도록이면 더 크게 잡아준다.
SELECT MAX(nSIZE) FROM temp_shared_pool_size;





EditText|Print|FindPage|DeletePage|LikePages|http://www.databaser.net|last modified 2010-03-08 17:39:13