출처 :  https://forums.oracle.com/forums/thread.jspa?threadID=467410

 

 

작성날짜 : 1997-11-24

 

 

MULTIPLE LISTENER의 LOAD BALANCING 및 2개의 NETWORK CARD 사용 시 SETUP
=======================================================

 

 

Oracle V7.3의 SQL*Net 2.3의 새로운 기능으로 여러 개의 Listener를 띄우면서 상호

Load Balancing을 유지하는 기능을 소개하고자 한다.


Load Balancing 기능을 이용하여 각각의 Listener와 Oracle Instance 간의 Overloading을 줄일 수 있다.


다음의 예는 하나의 장비 내에 2개의 Network Card가 있을 경우에 대해 setup을 하는 방법이며 만일

하나의 Network Card가 있을 경우는 Host는 하나만 지정하면 된다.

 

 

1. init<SID>.ora file을 지정할 Parameter

 

MTS_MULTIPLE_LISTENERS=TRUE
COMPATIBLE=7.3.2.0

 

 

2. 예를 들어 Listener를 2개 사용하는 경우라면 initSID.ora에

 

mts_dispatchers="tcp,10"
mts_max_dispatchers=20
mts_servers=20
mts_max_servers=40
mts_service=ORA73
mts_listener_address="(address_list=
(address=(protocol=tcp)(port=1621)(host=152.69.30.100))
)"
mts_listener_address="(address_list=
(address=(protocol=tcp)(port=1622)(host=152.69.30.100))
)"
mts_listener_address="(address_list=
(address=(protocol=tcp)(port=1623)(host=152.69.30.102))
)"
mts_listener_address="(address_list=
(address=(protocol=tcp)(port=1624)(host=152.69.30.102))
)"


 

3. listener.ora file에 설정되는 내용은

 

LISTENER1 =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 152.69.30.100)
(PORT=1621)
)
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 152.69.30.100)
(PORT=1622)
)
)
LISTENER2 =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 152.69.30.102)
(PORT=1623)
)
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 152.69.30.102)
(PORT=1624)
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORA73)
(ORACLE_HOME=/oracle2/ora73/app/oracle/product/7.3.2)
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORA73)
(ORACLE_HOME=/oracle2/ora73/app/oracle/product/7.3.2)
)
)
STARTUP_WAIT_TIME_LISTENER1 = 0
STARTUP_WAIT_TIME_LISTENER2 = 0
CONNECT_TIMEOUT_LISTENER1 = 0
CONNECT_TIMEOUT_LISTENER2 = 0

 

 

4. tnsnames.ora file에 설정되는 내용들

* 다수의 port에 Random하게 접속하는 경우

RANDOM =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 152.69.30.100)
(Port = 1621)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 152.69.30.100)
(Port = 1622)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 152.69.30.102)
(Port = 1623)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 152.69.30.102)
(Port = 1624)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
)

 

 

* 개개의 Port로 접속하는 경우

TORA1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host =krrcsun)
(Port = 1621)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
TORA2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host =krrcsun)
(Port = 1622)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
TORA3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host =krrcsun)
(Port = 1623)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)
TORA4 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host =krrcsun)
(Port = 1624)
)
)
(CONNECT_DATA =
(SID = ORA73)
)
)

 

 

5. 각각의 Listener를 띄우는 방법

 

$ lsnrctl start LISTENER1
$ lsnrctl start LISTENER2

 

 

 

+ Recent posts