"오라클 RAC SCAN 리스너 설정"의 두 판 사이의 차이
DB CAFE
잔글 (Dbcafe님이 오라클 리스너 SQLNET 설정 문서를 오라클 RAC SCAN 리스너 설정 문서로 이동했습니다) |
|||
(같은 사용자의 중간 판 33개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
== SCAN 리스너 == | == SCAN 리스너 == | ||
+ | {{틀:고지 상자 | ||
+ | |내용= | ||
+ | * '''Oracle Grid Infrastructure SCAN 리스너를 구성하는 방법(기존 리스너와 별개의 리스너)''' | ||
+ | * HA for Oracle 데이터베이스 데이터 서비스가 Oracle Grid Infrastructure for Clusters를 사용하여 | ||
+ | *:배치된 경우 단일 인스턴스 데이터베이스의 선호 리스너는 SCAN(Single Client Access Name) 리스너를 사용합니다. | ||
+ | * HA for Oracle 데이터베이스 구성에 SCAN 리스너를 사용하려면 | ||
+ | *:단일 인스턴스 데이터베이스의 local_listener 및 remote_listener 매개변수가 올바르게 설정되었는지 확인해야 합니다. | ||
+ | * SCAN 리스너가 구성된 경우 Oracle 데이터베이스 리스너 리소스는 필요하지 않습니다. | ||
+ | }} | ||
− | + | === SCAN LISTENER 상태 확인 === | |
− | + | <source lang='console'> | |
− | + | [root@rac1 ~]# srvctl status scan_listener | |
− | + | SCAN 리스너 LISTENER_SCAN1이(가) 사용으로 설정되었습니다. | |
− | + | SCAN 리스너 LISTENER_SCAN1이(가) 실행 중이 아닙니다. | |
− | + | SCAN 리스너 LISTENER_SCAN2이(가) 사용으로 설정되었습니다. | |
− | + | SCAN 리스너 LISTENER_SCAN2이(가) 실행 중이 아닙니다. | |
− | + | SCAN 리스너 LISTENER_SCAN3이(가) 사용으로 설정되었습니다. | |
− | + | SCAN 리스너 LISTENER_SCAN3이(가) 실행 중이 아닙니다. | |
− | + | </source> | |
− | |||
− | |||
− | |||
− | SCAN | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | + | === SCAN LISTENER 설정 방법 === |
+ | ==== 로컬 리스너 확인 ==== | ||
+ | * SQL*Plus를 사용하여 데이터베이스 사용자로 Oracle 데이터베이스에 로그인 | ||
+ | * local_listener 매개변수에 로컬 리스너 IP 번호 및 포트 번호가 포함되어 있는지 확인 | ||
+ | * local_listener 매개변수 설정을 표시합니다. | ||
+ | <source lang='console'> | ||
SQL> show parameters local_listener | SQL> show parameters local_listener | ||
− | |||
NAME TYPE VALUE | NAME TYPE VALUE | ||
------------------------------------ ----------------------------------------- | ------------------------------------ ----------------------------------------- | ||
31번째 줄: | 34번째 줄: | ||
</source> | </source> | ||
− | + | * local_listener 매개변수에 로컬 리스너 IP 번호 및 포트 번호가 포함되지 않은 경우 | |
− | 이 매개변수를 빈 값으로 설정한 다음 | + | :* 이 매개변수를 빈 값으로 설정한 다음 Oracle 데이터베이스를 다시 시작합니다. |
− | Oracle 데이터베이스를 다시 시작합니다. | + | :* Oracle 데이터베이스가 다시 시작되면 |
− | + | ::* Oracle Clusterware에서 동적으로 local_listener 매개변수를 설정합니다. | |
− | |||
− | Oracle Clusterware에서 동적으로 local_listener 매개변수를 설정합니다. | ||
− | <SOURCE lang=' | + | ==== 로컬 리스너 초기화 ==== |
+ | <SOURCE lang='sql'> | ||
SQL> alter system set local_listener='' scope=both; | SQL> alter system set local_listener='' scope=both; | ||
System altered. | System altered. | ||
</source> | </source> | ||
− | + | * local_listener 매개변수 설정이 올바른지 확인. | |
− | <SOURCE lang=' | + | <SOURCE lang='sql'> |
SQL> show parameters local_listener | SQL> show parameters local_listener | ||
</source> | </source> | ||
− | + | ||
− | <SOURCE lang=' | + | ==== local 리스너 다를 경우 각각 변경 함. ==== |
− | alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.33)(PORT=2222))' scope=both sid='MIG1'; -- | + | <SOURCE lang='sql'> |
− | alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.43)(PORT=2222))' scope=both sid='MIG2'; -- | + | alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.33)(PORT=2222))' scope=both sid='MIG1'; -- RAC1번 |
+ | alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.43)(PORT=2222))' scope=both sid='MIG2'; -- RAC2번 | ||
</source> | </source> | ||
− | remote_listener 매개변수가 SCAN 이름과 포트 번호를 참조하는지 | + | * remote_listener 매개변수가 SCAN 이름과 포트 번호를 참조하는지 확인 |
− | + | * remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 여부 지정. | |
− | remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 | ||
− | <SOURCE lang=' | + | <SOURCE lang='sql'> |
$ srvctl config scan | $ srvctl config scan | ||
− | |||
SCAN name: SCAN-name, Network: network-number | SCAN name: SCAN-name, Network: network-number | ||
… | … | ||
</source> | </source> | ||
− | + | <SOURCE lang='sql'> | |
− | <SOURCE lang=' | ||
$ srvctl config scan_listener | $ srvctl config scan_listener | ||
− | |||
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:port-number | SCAN Listener LISTENER_SCAN1 exists. Port: TCP:port-number | ||
… | … | ||
</source> | </source> | ||
− | remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 | + | ==== remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 여부 지정. ==== |
− | + | <SOURCE lang='sql'> | |
− | <SOURCE lang=' | ||
SQL> show parameter remote_listener | SQL> show parameter remote_listener | ||
− | |||
NAME TYPE VALUE | NAME TYPE VALUE | ||
------------------------------------ ----------- ------------------------------ | ------------------------------------ ----------- ------------------------------ | ||
remote_listener string SCAN-name:port-number | remote_listener string SCAN-name:port-number | ||
</source> | </source> | ||
− | + | * remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있지 않은 경우 | |
− | remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있지 않은 경우 | + | : 해당 값을 사용하여 매개변수를 설정합니다. |
− | 해당 값을 사용하여 매개변수를 설정합니다. | + | <SOURCE lang='sql'> |
− | |||
− | <SOURCE lang=' | ||
SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC1'; | SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC1'; | ||
SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC2'; | SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC2'; | ||
</source> | </source> | ||
− | remote_listener 매개변수의 SCAN | + | ==== remote_listener 매개변수의 SCAN 설정 확인 ==== |
− | + | <SOURCE lang='sql'> | |
− | <SOURCE lang=' | ||
SQL> show parameter remote_listener | SQL> show parameter remote_listener | ||
</source> | </source> | ||
− | + | * 각 클러스터 노드에서 tnsnames.ora 파일이 Net Service Name의 SCAN 이름을 참조하는지 확인합니다. | |
− | 각 클러스터 노드에서 tnsnames.ora 파일이 Net Service Name의 SCAN 이름을 참조하는지 확인합니다. | + | <SOURCE lang='sql'> |
− | |||
− | <SOURCE lang=' | ||
ORCL = | ORCL = | ||
(DESCRIPTION = | (DESCRIPTION = | ||
107번째 줄: | 99번째 줄: | ||
) | ) | ||
</source> | </source> | ||
− | |||
* 참고 ) 리스너 시작/종료 | * 참고 ) 리스너 시작/종료 | ||
+ | <source lang='sql'> | ||
$GRID_HOME/bin/srvctl stop scan_listener | $GRID_HOME/bin/srvctl stop scan_listener | ||
+ | </source> | ||
+ | <source lang='sql'> | ||
$GRID_HOME/bin/srvctl start scan_listener | $GRID_HOME/bin/srvctl start scan_listener | ||
+ | </source> | ||
− | + | {{:SCAN 리스너 재구성}} | |
== (로컬) 리스너 설정(listener.ora) == | == (로컬) 리스너 설정(listener.ora) == | ||
=== <big>listener.ora</big> === | === <big>listener.ora</big> === | ||
− | + | {{틀:고지 상자 | |
+ | |내용= | ||
- 위치: 서버에서 $ORACLE_HOME/network/admin/listener.ora | - 위치: 서버에서 $ORACLE_HOME/network/admin/listener.ora | ||
123번째 줄: | 119번째 줄: | ||
- 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 파일 | - 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 파일 | ||
− | + | }} | |
- 설정형식: | - 설정형식: | ||
163번째 줄: | 159번째 줄: | ||
* SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다. | * SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다. | ||
− | + | * 상태 확인 command : | |
+ | <source lang=shell> | ||
+ | oracle$> lsnrctl status [리스너명] | ||
+ | </source> | ||
* 12c에서 파라미터 확인 | * 12c에서 파라미터 확인 | ||
+ | <source lang=shell> | ||
SQL> show parameter local_listener; | SQL> show parameter local_listener; | ||
+ | </source> | ||
+ | * 변경 | ||
+ | <source lang=sql> | ||
+ | SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=서버아이피)(PORT=2222))' scope=both; | ||
+ | </source> | ||
− | + | * 리스너 시작 | |
− | + | <source lang=shell> | |
+ | oracle$> lsnrctl start [리스너명] | ||
+ | </source> | ||
+ | |||
+ | [[Category:oracle]] |
2024년 5월 24일 (금) 00:04 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 SCAN 리스너[편집]
android * Oracle Grid Infrastructure SCAN 리스너를 구성하는 방법(기존 리스너와 별개의 리스너)
- HA for Oracle 데이터베이스 데이터 서비스가 Oracle Grid Infrastructure for Clusters를 사용하여
- 배치된 경우 단일 인스턴스 데이터베이스의 선호 리스너는 SCAN(Single Client Access Name) 리스너를 사용합니다.
- HA for Oracle 데이터베이스 구성에 SCAN 리스너를 사용하려면
- 단일 인스턴스 데이터베이스의 local_listener 및 remote_listener 매개변수가 올바르게 설정되었는지 확인해야 합니다.
- SCAN 리스너가 구성된 경우 Oracle 데이터베이스 리스너 리소스는 필요하지 않습니다.
1.1 SCAN LISTENER 상태 확인[편집]
[root@rac1 ~]# srvctl status scan_listener
SCAN 리스너 LISTENER_SCAN1이(가) 사용으로 설정되었습니다.
SCAN 리스너 LISTENER_SCAN1이(가) 실행 중이 아닙니다.
SCAN 리스너 LISTENER_SCAN2이(가) 사용으로 설정되었습니다.
SCAN 리스너 LISTENER_SCAN2이(가) 실행 중이 아닙니다.
SCAN 리스너 LISTENER_SCAN3이(가) 사용으로 설정되었습니다.
SCAN 리스너 LISTENER_SCAN3이(가) 실행 중이 아닙니다.
1.2 SCAN LISTENER 설정 방법[편집]
1.2.1 로컬 리스너 확인[편집]
- SQL*Plus를 사용하여 데이터베이스 사용자로 Oracle 데이터베이스에 로그인
- local_listener 매개변수에 로컬 리스너 IP 번호 및 포트 번호가 포함되어 있는지 확인
- local_listener 매개변수 설정을 표시합니다.
SQL> show parameters local_listener
NAME TYPE VALUE
------------------------------------ -----------------------------------------
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=node-IP-number)(PORT=port-number))
- local_listener 매개변수에 로컬 리스너 IP 번호 및 포트 번호가 포함되지 않은 경우
- 이 매개변수를 빈 값으로 설정한 다음 Oracle 데이터베이스를 다시 시작합니다.
- Oracle 데이터베이스가 다시 시작되면
- Oracle Clusterware에서 동적으로 local_listener 매개변수를 설정합니다.
1.2.2 로컬 리스너 초기화[편집]
SQL> alter system set local_listener='' scope=both;
System altered.
- local_listener 매개변수 설정이 올바른지 확인.
SQL> show parameters local_listener
1.2.3 local 리스너 다를 경우 각각 변경 함.[편집]
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.33)(PORT=2222))' scope=both sid='MIG1'; -- RAC1번
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.22.43)(PORT=2222))' scope=both sid='MIG2'; -- RAC2번
- remote_listener 매개변수가 SCAN 이름과 포트 번호를 참조하는지 확인
- remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 여부 지정.
$ srvctl config scan
SCAN name: SCAN-name, Network: network-number
…
$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:port-number
…
1.2.4 remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 여부 지정.[편집]
SQL> show parameter remote_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string SCAN-name:port-number
- remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있지 않은 경우
- 해당 값을 사용하여 매개변수를 설정합니다.
SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC1';
SQL> alter system set remote_listener='SCAN-name:port-number' scope=both sid='RAC2';
1.2.5 remote_listener 매개변수의 SCAN 설정 확인[편집]
SQL> show parameter remote_listener
- 각 클러스터 노드에서 tnsnames.ora 파일이 Net Service Name의 SCAN 이름을 참조하는지 확인합니다.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SCAN-name)(PORT = port-number))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
- 참고 ) 리스너 시작/종료
$GRID_HOME/bin/srvctl stop scan_listener
$GRID_HOME/bin/srvctl start scan_listener
2 SCAN 리스너 재구성 방법[편집]
- RAC1,2번 노드에 DNS를 재구성 한 후 SCAN IP를 오라클에서 권장하는 3개로 변경.
2.1 SCAN IP / LISTENER 의 Configuration 상태 확인[편집]
#> srvctl config scan
SCAN name: rac-scan.localdomain, Network: 1/192.168.1.0/255.255.255.0/eth1
SCAN VIP name: scan1, IP: /rac-scan.localdomain/192.168.1.51
2.2 Local DNS에서 SCAN IP 접속 가능한지 확인[편집]
# host rac-scan
# nslookup rac-scan
rac-scan.localdomain has address 192.168.1.52
rac-scan.localdomain has address 192.168.1.53
rac-scan.localdomain has address 192.168.1.51
Server: 192.168.1.101
Address: 192.168.1.101#53
Name: rac-scan.localdomain
Address: 192.168.1.51
Name: rac-scan.localdomain
Address: 192.168.1.52
Name: rac-scan.localdomain
Address: 192.168.1.53
2.3 SCAN IP / LISTENER 중지[편집]
#> srvctl stop scan_listener
#> srvctl stop scan
#> crsctl stat res -t
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 OFFLINE OFFLINE
ora.oc4j
1 OFFLINE OFFLINE
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 OFFLINE OFFLINE
ora.scan1.vip
1 OFFLINE OFFLINE
2.4 SCAN LISTENER & IP 삭제[편집]
#> srvctl remove scan_listener
Remove scan listener? (y/[n]) y
#> srvctl remove scan
Remove the scan? (y/[n]) y
2.5 SCAN IP 등록[편집]
#> srvctl add scan -n rac-scan
#> srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.1.0/255.255.255.0/eth1
SCAN VIP name: scan1, IP: /192.168.1.53/192.168.1.53
SCAN VIP name: scan2, IP: /192.168.1.51/192.168.1.51
SCAN VIP name: scan3, IP: /192.168.1.52/192.168.1.52
- PRCS-1016 : Failed to resolve Single Client Access Name rac-scan 에러가 발생 하면 "/etc/nsswitch.conf" 파일의 설정 확인.
- /etc/nsswitch.conf
# Oracle RAC
hosts: dns files
2.6 SCAN LISTENER 등록[편집]
#> srvctl add scan_listener
#> srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
2.7 SCAN Listener & IP 실행[편집]
#> srvctl start scan
#> srvctl start scan_listener
#> crsctl stat res -t
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE rac1
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE rac1
ora.oc4j
1 OFFLINE OFFLINE
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 OFFLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE rac1
ora.scan2.vip
1 ONLINE ONLINE rac1
ora.scan3.vip
1 ONLINE ONLINE rac1
2.8 OCR 백업 경로 확인[편집]
#> ocrconfig -showbackup
rac1 2012/12/07 07:35:33 /u01/app/11.2.0/grid/cdata/rac-scan/backup00.ocr
rac1 2012/12/07 03:23:30 /u01/app/11.2.0/grid/cdata/rac-scan/backup01.ocr
rac1 2012/12/06 23:11:29 /u01/app/11.2.0/grid/cdata/rac-scan/backup02.ocr
rac1 2012/12/06 23:11:29 /u01/app/11.2.0/grid/cdata/rac-scan/day.ocr
rac1 2012/12/06 23:11:29 /u01/app/11.2.0/grid/cdata/rac-scan/week.ocr
2.9 OCR Manual Backup[편집]
#> ocrconfig -export /u01/app/11.2.0/grid/cdata/rac-scan/manual_bk_121207_0946.ocr
# ls -al /u01/app/11.2.0/grid/cdata/rac-scan/manual*
-rw-r--r-- 1 root root 73130 Dec 7 09:47 /u01/app/11.2.0/grid/cdata/rac-scan/manual_bk_121207_0946.ocr
3 (로컬) 리스너 설정(listener.ora)[편집]
3.1 listener.ora[편집]
android - 위치: 서버에서 $ORACLE_HOME/network/admin/listener.ora
- 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일
- 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 파일
- 설정형식:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip1)(PORT = 포트번호))
(ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip2)(PORT = 포트번호))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = SID_name)
(ORACLE_HOME = 오라클위치)
)
)
#로컬 리스너 설정 -- DB의 local_listener 파라미터에서 사용
LISTENER_RTIST =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 11.22.33.44)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 11.22.33.44)(PORT = 8855))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 8855))
)
- LISTENER : 리스너 이름이며 다른 이름으로 설정 가능. SID_LIST_리스너명 항목에서 리스너명과 동일
- ADDRESS_LIST : ADDRESS들의 모임이며 여러 개의 ADDRESS를 동시에 설정 가능
- ADDRESS : 데이터베이스 서버의 주소이며 프로토콜, 서버명 및 사용포트로 구성된다.
- SID_LIST_LISTENER : 리스너가 서비스하는 데이터베이스 정보를 설정하며 SID_LIST_리스너명으로 설정
- SID_LIST : 해당 리스너 프로세스가 하나 이상의 데이터베이스를 서비스 할 경우에 해당 부분에 여러개의 SID_DESC를 등록한다.
- SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다.
- 상태 확인 command :
oracle$> lsnrctl status [리스너명]
- 12c에서 파라미터 확인
SQL> show parameter local_listener;
- 변경
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=서버아이피)(PORT=2222))' scope=both;
- 리스너 시작
oracle$> lsnrctl start [리스너명]