출처 :   http://blog.naver.com/PostView.nhn?blogId=conifer7&logNo=30117155838

 

 

 

# 리스너 등록 방법


• 동적 서비스 등록
 - listener.ora 파일의 구성이 필요하지 않음
 - 리스너는 PMON 프로세스에 의존함


• 정적 서비스 구성
 - Oracle8 및 이전 릴리스에 사용
 - listener.ora 구성 필요
 - Oracle Enterprise Manager 및 기타 서비스에 필요

 

 

# 동적 서비스 등록의 이점


• listener.ora 파일에는 리스너가 사용하는 데이터베이스에 대한 정보를 지정하는 SID_LIST_LISTENER_NAME

매개변수가 필요하지 않습니다. 그러나 사용하는 관리 도구에 필요한 경우에는 이 매개변수가 있어야 합니다.
• 연결 시간 복구 기능이 활성화됩니다.
• 공유 서버에 대해 연결 로드 밸런싱이 활성화됩니다.

 

동적 서비스 등록은 Oracle9i 또는 Oracle8i 인스턴스에서 사용됩니다. 등록은 데이터베이스 초기화 매개변수 파일에 필요한 구성이 있는 각 데이터베이스 인스턴스의 PMON프로세스에 의해 수행됩니다. 동적 서비스 등록을 위해서는 listener.ora 파일에서 구성 작업을 수행할 필요가 없습니다.

동적 서비스 등록은 데이터베이스 초기화 파일에서 구성됩니다. 리스너 구성은 데이터베이스 초기화 파일의 정보와 동기화되어야 합니다.

 

서비스 등록을 위해서는 다음의 초기화 매개변수를 구성해야 합니다.


• SERVICE_NAMES: 이 인스턴스가 연결하는 데이터베이스 서비스에 대해 하나 이상의 이름을 지정합니다. 동일한 데이터베
이스가 다르게 사용되는 경우를 구분하기 위해 여러 서비스 이름을 지정할 수 있습니다.
• INSTANCE_NAME: 인스턴스 이름을 지정합니다. 단일 인스턴스 데이터베이스 시스템에서 인스턴스 이름은 보통 데이터베이
스 이름과 동일합니다.

 

예제
SERVICE_NAMES=expert.oracle.com
INSTANCE_NAME=orcl

 

=============================================================================

 

로드밸런스

 

로드밸런스란 클라이언트의 요청들을 여러 개의 서버로 분산시켜서 다중 서버들의 자원을 골고루 사용할 수 있도록 하는 것이다. 오라클에서 지원하는 로드밸런스의 기능에는 클라이언트 사이드 로드밸런스와 서버 사이드 로드밸런스 2가지가 있다.

클라이언트 사이드 로드밸런스인 경우에는 tnsnames.ora에 LOAD_BALANCE=ON을 지정하고 ADDRESS_LIST에 여러 개의 노드로 접속하는 주소를 지정하면 임의적(random) 방식을 이용하여 접속하게 된다. 이와 같은 방식은 접속의 수를 1:1로 나뉘는 방식으로 고정 방식(static)이라 할 수 있다.  다음은 클라이언트 로드밸런스를 사용하는 방식이다.

 

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = hikim1)(PORT = 1526))
(ADDRESS = (PROTOCOL = TCP)(HOST = hikim2)(PORT = 1526))
)
(CONNECT_DATA =
(SERVICE_NAME = 10g2)
)
)

 

 

서버 사이드 로드밸런스인 경우에는 init.ora의 remote_listener 들을 지정하여 로드밸런스를 할 모든 리스너를 지정한다. 이렇지정하면 오라클 프로세스 중의 하나인 PMON이 30초마다 서버의 부하를 측정하여 변화가 많이 있는 경우모든 리스너에 정보를 배포한다. 변화가 없을 경우에는 10분마다 다시 부하 정보가 갱신된다.

 

 

여기서 측정되는 부하는 접속 수와 서버 CPU의 부하를 계산한다. 이렇게 계산된 부하를 바탕으로 각각의 리스너가 클라이언트의 접속 요청에 대해 최소의 부하를 가진 서버로 보내주게 된다. 이와 같은 방식은 접속요청에 대해 부하에 따라 접속하는 서버를 결정하게 되므로 동적(dynamic) 방식이라 할 수 있다.


다음은 서버 사이드 로드밸런스를 사용하는 방식이다.

 

Init.ora(node1)
remote_listener=ERP02
Init.ora(node2)
remote_listener=ERP01

 

 

로드밸런스의 기능은 RAC 환경에서 추가적인 로드밸런스 장비의 도입없이도 전체 자원을 균등하게 사용할 수 있도록 해주며 대용량 처리를 요하는 시스템이나 많은 사용자가 있는 시스템에서는 자원을 효과적으로 사용할 수 있게 해주는 것이다.


그럼 로드밸런스에 대해 좀 더 깊이 고민해 보자. 일반적으로 정상 운영 중에 로드밸런스를 많이 고민하게 된다. 이는 앞에서 설명한 기능으로 어느 정도 해결이 가능하다. 그런데 장애 후의 로드밸런스에 문제점이 있다. 만약 한 개의 노드에 장애가 발생했다고 가정하면 모든 접속은 정상적인 노드로 새로 접속하여 서비스를 받게 된다.

이후 장애가 발생한 노드가 정상 복귀되어 서비스를 재개하면 어떻게 될까? 이미 모든 클라이언트가 정상 노드에 접속하여 서비스를 받고 있으므로 계속적으로 정상 노드에서만 운영하게 되어 있다.


이렇듯 장애 후의 부하 분산에 대한 적당한 답은 아직까지 없었다. 보통의 경우는 어쩔 수 없이 응용 애플리케이션이나 WAS 를 재가동하여 접속을 새로 하는 방법 밖에 없었다. 그러나 오라클10g에서는 이러한 장애 후 재부하 분산을 위해 dbms_service라는 PL/SQL 패키지를 이용하여 인액티브한 세션을 정리하여 다시 접속을 시키는 방식으로 장애 후 부하 분산 기능을 제공한다.

 

조금은 미약한 방식인 듯하지만 WAS의 커넥션 풀(connection pool)을 사용하는 경우라면 잘 활용할 수 있다.


http://cafe.naver.com/ocmkorea.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=3777&


 

 

+ Recent posts