블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

1 단계 : 서버프로세스의 활성화 지연

 

 
   

Pre-Spawn 서버 프로세스

 
 

전용서버 프로세스는 개발자가 클라이언트로부터 데이터베이스에 접속하는 순간 리스너 프로세스에 의해 할당됩니다. 이렇게 개발자의 요구가 있을 때 마다 리스너 프로세스가 하나씩 활성화되게 되는데 이런 유형을 스판 전용서버 프로세스(SPAWN DEDICATED SERVER PROCESS)라고 합니다. 문제점은 대용량 데이터베이스 환경에서 많은 사용자들이 동시에 데이터베이스에 접속을 요구하게 되면 하나의 리스너 프로세스가 필요할 때 마다 서버 프로세스를 활성화시켜야 하기 때문에 접속할 때 일시적으로 대기상태가 발생할 수도 있습니다.
즉, 데이터베이스에 접속할 때 성능이 저하될 수 있다는 의미입니다.

이런 문제를 해결하기 위해서는 여러가지 네트워크 솔루션들이 사용될 수 있지만 가장 기본적인 방법은 프리스판 전용서버 프로세스(PRE-SPAWN DEDICATED SERVER PROCESS)를 활성화하는 방법입니다. 스판 전용서버 프로세스가 필요할 때 마다 프로세스를 활성화하는 방법이라면 프리스판 전용서버 프로세스는 미리 여러 개의 프로세스를 활성화시킨 다음 새로운 접속이 요구될 때마다 미리 활성화 해둔 프리스판 전용서버 프로세스를 할당해 주는 방법입니다.
즉, 데이터베이스에 접속을 요구하면 미리 준비된 프로세스를 연결 만 시켜주면 되기 때문에 데이터베이스 접속이 빨라집니다.( 이 기능은 오라클 8i 버전까지 사용가능 합니다.)

위 그림의 오퍼레이션 절차를 보다 자세히 알아 봅시다.

    
  
   
 

LISTENER.ORA 파일에 프리스판 전용서버 프로세스를 활성화하기 위한 환경설정을 한 다음 리스너 프로세스를 시작합니다. 만약, 3개의 프리스판 프로세스를 활성화 시켰다면
운영체계 상에 프로세스들을 확인할 수 있을 것 입니다

다음 예제는 LISTENER.ORA 파일에 프리스판 전용서버 프로세스를 위한 환경설정 방법입니다.(DB명은 ORA90이라고 가정합니다)

   
   
  

$ cd $TNS_ADMIN

$ vi listener.ora

 

LISTENER=

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(Host = 192.9.200.1)(Port = 1521))

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(ORACLE_HOME=/export/home/dbaxx)

(SID_NAME = ORA90)

######### 프리스판 전용서버 프로세스 환경설정 ###########

(PRESPAWN_MAX=99) ß 프리스판 전용서버 프로세스의 최대개수

(PRESPAWN_LIST=

(PRESPAWN_DESC=

(PROTOCOL=TCP) ß 사용될 프로토콜

(POOL_SIZE=3) ß 항상 활성화될 프리스판 전용서버 프로세스의 수

)

)

########################################################

)

)

 

:wq!

  

리스너를 다시 재 시작하여 프리스판 프로세스를 활성화 하십시오.

$ cd $TNS_ADMIN

$ lsnrct| stop LISTENER

 

$ lsnrct| start LISTENER

   
  

LSNRCTL for Solaris : Version 9.0.1.0.0 - Production on 27-JUL-99 17:37:53

(c) Copyright 1997 Oracle Corporation. All rights reserved.

(ADDRESS=(PROTOCOL=tcp)(DEV=12)(HOST=XXX.XXX.XXX)(PORT=80xx))

Connected to (ADDRESS=(PROTOCOL=TCP)(Host=192.9.200.1)(Port 1521))

STATUS of the LISTENER

----------------------

Alias LISTENER

……………………

Services Summary…

LISTENER has 1 service handler(s)

The command completed successfully

   
   
  

자~ 정말 프리스판 전용서버 프로세스가 활성화되었는지 확인해 봅시다.

   
  

$ ps -ef| grep ORA90 | sort

 

ora90 6280 1 0 18:06:12 ? 0:00 oracleLISTENER

(DESCRIPTION=(COMMAND=prespawn)(PROTOCOL=TCP)(SERVICE_ID=2)(HANDLER_I

 

ora90 6282 1 0 18:06:12 ? 0:00 oracleLISTENER

(DESCRIPTION=(COMMAND=prespawn)(PROTOCOL=TCP)(SERVICE_ID=3)(HANDLER_I

 

ora90 6284 1 0 18:06:12 ? 0:00 oracleLISTENER

(DESCRIPTION=(COMMAND=prespawn)(PROTOCOL=TCP)(SERVICE_ID=4)(HANDLER_I

   
  

<- 각 프로세스 상태를 확인해 보면 "COMMAND=prespawn" 이라는 상태값을 확인할 수 있을 것 입니다.

   
 

프리스판 전용서버 프로세스가 활성화 되었다면 이제 데이터베이스에 접속해 보도록 하겠습니다.

   
  

$ sqlplus scott/tiger@ora816

   
   
  

SQL*PLUS 툴을 이용해 데이터베이스에 접속을 요구하면, 먼저 사용자 프로세스가 활성화됩니다. 그리고, 사용자 프로세스는 호스트 스트링이 의미하는 네트워크 환경정보를 통해 데이터베이스가 있는 서버의 리스너에게 접속을 요구하게 됩니다.

   
 

리스너 프로세스는 현재 활성화되어 있는 프리스판 전용서버 프로세스 중에서 하나의 프로세스 주소를 읽어 옵니다.

   
 

프리스판 전용서버 프로세스의 주소를 사용자 프로세스에게 알려 줍니다.

   
 

접속할 프로세스의 주소를 넘겨받은 사용자 프로세스는 할당 받은 전용서버 프로세스에게 개발자가 실행한 SQL문의 실행을 요청합니다.

   
 

프리스판 전용서버 프로세스는 사용자 프로세스로부터 요청 받은 SQL문을 분석한 다음 실행합니다.

   
 

리스너 프로세스는 방금 하나의 프리스판 전용서버 프로세스가 사용되었으므로 필요한 개수만큼 활성화시켜 놓습니다.

Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함