# 서버에서 현재 listener에 등록된 서비스 목록 확인
- 별도 설정없이 기본값으로 서비스가 진행되고 있어서 자동으로 서비스명도 등록되고 포트도 1521로 설정
- 실제 서비스에서는 보안등의 이유로 기본으로 설정되어있는 1521을 사용하지 않음
[oracle@rac1 ~]$ lsnrctl services
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 24-NOV-2014 17:23:50
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "rac" has 2 instance(s).
Instance "rac1", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:3 refused:0 state:ready
LOCAL SERVER
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1)(PORT=1521))
Instance "rac2", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:3 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2)(PORT=1521))
Service "rac_XPT" has 2 instance(s).
Instance "rac1", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:3 refused:0 state:ready
LOCAL SERVER
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1)(PORT=1521))
Instance "rac2", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:3 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2)(PORT=1521))
The command completed successfully
# Dynamic Listener 설정 및 RAC서비스를 하는 port를 9001로 변경 (listener이름 LOCAL로 변경)
step 1. 현재 운영중인 서버의 spfile에 LOCAL_LISTENER 값을 확인 후 새로운 이름으로 변경
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /dev/raw/raw23
SQL> show parameter local_listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
--value에 값이 없으면 특정listener를 사용하지않고 기본 설정값 그대로 사용
SQL> alter system set local_listener=local scope=spfile;
System altered.
--리스너이름 LOCAL
--Listener이름을 변경하거나 사용하는 포트를 변경하려면 반드시 서버의 listener.ora파일의 내용을 변경해주어야함
--local_listener 설정값 지정
step 2. 재시작 후부터 적용되기 때문에 crs 전체 중단
[oracle@rac1 ~]$ crs_stop -all
Attempting to stop `ora.rac1.gsd` on member `rac1`
Attempting to stop `ora.rac1.ons` on member `rac1`
Attempting to stop `ora.rac2.ons` on member `rac2`
Attempting to stop `ora.rac2.gsd` on member `rac2`
Attempting to stop `ora.rac.db` on member `rac2`
Stop of `ora.rac2.gsd` on member `rac2` succeeded.
Stop of `ora.rac1.gsd` on member `rac1` succeeded.
Stop of `ora.rac1.ons` on member `rac1` succeeded.
Stop of `ora.rac2.ons` on member `rac2` succeeded.
Stop of `ora.rac.db` on member `rac2` succeeded.
`ora.rac.rac2.inst` is already OFFLINE.
`ora.rac.rac1.inst` is already OFFLINE.
Attempting to stop `ora.rac1.LISTENER_RAC1.lsnr` on member `rac1`
Attempting to stop `ora.rac2.LISTENER_RAC2.lsnr` on member `rac2`
Stop of `ora.rac1.LISTENER_RAC1.lsnr` on member `rac1` succeeded.
Attempting to stop `ora.rac1.vip` on member `rac1`
Stop of `ora.rac2.LISTENER_RAC2.lsnr` on member `rac2` succeeded.
Attempting to stop `ora.rac2.vip` on member `rac2`
Stop of `ora.rac1.vip` on member `rac1` succeeded.
Stop of `ora.rac2.vip` on member `rac2` succeeded.
CRS-0216: Could not stop resource 'ora.rac.rac1.inst'.
CRS-0216: Could not stop resource 'ora.rac.rac2.inst'.
[oracle@rac1 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac.db application OFFLINE OFFLINE
ora....c1.inst application OFFLINE OFFLINE
ora....c2.inst application OFFLINE OFFLINE
ora....C1.lsnr application OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac1.ons application OFFLINE OFFLINE
ora.rac1.vip application OFFLINE OFFLINE
ora....C2.lsnr application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac2.ons application OFFLINE OFFLINE
ora.rac2.vip application OFFLINE OFFLINE
step 3. RAC1 서버의 listener.ora 파일의 내용에 아래의 내용을 변경
[oracle@rac1 ~]$ vi /home/oracle/product/10.2/db/network/admin/listener.ora
step 4. RAC1 서버의 tnsnames.ora 파일의 기존의 내용 아래에 다음 내용 추가
[oracle@rac1 ~]$ vi /home/oracle/product/10.2/db/network/admin/tnsnames.ora
step 5. RAC2 서버의 listener.ora 파일의 내용에 아래의 내용을 변경
[oracle@rac2 ~]$ vi /home/oracle/product/10.2/db/network/admin/listener.ora
step 6. RAC2 서버의 tnsnames.ora 파일의 기존의 내용 아래에 다음 내용 추가
[oracle@rac2 ~]$ vi /home/oracle/product/10.2/db/network/admin/tnsnames.ora
step 7. crs 재시작
[oracle@rac2 ~]$ crs_start -all
Attempting to start `ora.rac1.vip` on member `rac1`
Attempting to start `ora.rac2.vip` on member `rac2`
Attempting to start `ora.rac.rac2.inst` on member `rac2`
Attempting to start `ora.rac.rac1.inst` on member `rac1`
Start of `ora.rac1.vip` on member `rac1` succeeded.
Start of `ora.rac2.vip` on member `rac2` succeeded.
Attempting to start `ora.rac1.LISTENER_RAC1.lsnr` on member `rac1`
Attempting to start `ora.rac2.LISTENER_RAC2.lsnr` on member `rac2`
Start of `ora.rac1.LISTENER_RAC1.lsnr` on member `rac1` succeeded.
Start of `ora.rac2.LISTENER_RAC2.lsnr` on member `rac2` succeeded.
Start of `ora.rac.rac1.inst` on member `rac1` succeeded.
Start of `ora.rac.rac2.inst` on member `rac2` succeeded.
CRS-1002: Resource 'ora.rac1.ons' is already running on member 'rac1'
CRS-1002: Resource 'ora.rac2.ons' is already running on member 'rac2'
Attempting to start `ora.rac1.gsd` on member `rac1`
Attempting to start `ora.rac2.gsd` on member `rac2`
Start of `ora.rac2.gsd` on member `rac2` succeeded.
Start of `ora.rac1.gsd` on member `rac1` succeeded.
CRS-0233: Resource or relatives are currently involved with another operation.
CRS-0223: Resource 'ora.rac1.ons' has placement error.
CRS-0223: Resource 'ora.rac2.ons' has placement error.
[oracle@rac2 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac.db application ONLINE ONLINE rac1
ora....c1.inst application ONLINE ONLINE rac1
ora....c2.inst application ONLINE ONLINE rac2
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
step 8. 확인
[oracle@rac1 ~]$ lsnrctl service
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 25-NOV-2014 10:04:25
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "rac" has 2 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=9001))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac)(INSTANCE_NAME=rac1)))
Instance "rac2", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=9001))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac)(INSTANCE_NAME=rac2)))
Service "rac_XPT" has 2 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=9001))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac)(INSTANCE_NAME=rac1)))
Instance "rac2", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=9001))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac)(INSTANCE_NAME=rac2)))
The command completed successfully
step 9. 접속테스트를 할 client의 tnsnames.ora파일 수정 (PC에 있는 tnsnames.ora파일)
step 10. client에서 rac에 접속 시도 -> 성공
댓글