전통적인 Oracle 접속 방식인 "Dedicated Server"와 "Shared Server" 방식외에 Oracle 11g에서 DRCP (Database Resident Connection Pooling)라는 접속 방식이 추가 되었습니다.
Database resident connection pooling (DRCP) provides a connection pool
in the database server for typical Web application usage scenarios
where the application acquires a database connection, works on it for a
relatively short duration, and then releases it.
메뉴얼을 보면 각각의 접속 방식에 소모되는 memory를 계산해 놓은 부분이 있는데, 요거 보면 적용할 만 하겠다 싶긴 합니다.
그러나 memory 사용량을 보면 혹할수도 있겠는데, 만약 concurrent가 5000이라고 가정 한다면,
DRCP의 경우는 100개만 접속 해 있고 나머지는 queue에 대기하고 있는 모양이겠죠?
shared server의 경우 100개만 떠있어도 100개의 shared server가 5000개의 세션을 cover 해주고 있으니,
DRCP와 dedicate/ shared server와 비교하는 것 자체가 사실 말이 안될 수 도 있습니다.
memory required for each session is 400 KB and the memory required for
each server process is 4 MB. The pool size is 100 and the number of
shared servers used is 100. If there are 5000 client connections, the
memory used by each configuration is as follows:
Dedicated Server
Memory used = 5000 X (400 KB + 4 MB) = 22 GB
Shared Server
Memory used = 5000 X 400 KB + 100 X 4 MB = 2.5 GB
Database Resident Connection Pooling
Memory used = 100 X (400 KB + 4 MB) + (5000 X 35KB)= 615 MB
Dedicated Server
Memory used = 5000 X (400 KB + 4 MB) = 22 GB
Shared Server
Memory used = 5000 X 400 KB + 100 X 4 MB = 2.5 GB
Database Resident Connection Pooling
Memory used = 100 X (400 KB + 4 MB) + (5000 X 35KB)= 615 MB
설정 방법도 별로 어렵지 않습니다. 서버단에서 process parameter 좀 늘려주고 다음 처럼 수행하고, client 단에서 tnsnaems.ora의 설정 부분에 SERVER를 POOLED라고만 정의하면 되네요.
DRCP 설정 방법
SQL> exec dbms_connection_pool.configure_pool(maxsize=>10,inactivity_timeout=>60);
SQL> exec sys.dbms_connection_pool.start_pool();
Client 설정
DRCP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sample.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = POOLED)
(SERVICE_NAME = orcl.sample.com)
)
)
SQL> exec dbms_connection_pool.configure_pool(maxsize=>10,inactivity_timeout=>60);
SQL> exec sys.dbms_connection_pool.start_pool();
Client 설정
DRCP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sample.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = POOLED)
(SERVICE_NAME = orcl.sample.com)
)
)
딱히 테스트 해보고 올린 post가 아니니 잘못된 부분이 있으면 가차없이 알려주세요. ^^
'Oracle Database' 카테고리의 다른 글
Oracle의 감춰진 parameter 찾아보기 (0) | 2010.01.29 |
---|---|
oracle 11g new feature : 아주 약간 편해진 spfile recovery (0) | 2010.01.27 |
오렌지 무료교육 (2) | 2010.01.13 |
Oracle UNDO tablespace의 datafile 옮기는 방법 2개. (0) | 2010.01.07 |
Oracle Grid control - metric collection interval 변경하기. (0) | 2010.01.06 |