1. 서버 Network 설정
A) 서버 정보 hosts 파일 저장
10.10.50.11 ora_act 10.10.50.21 ora_stb
hosts 파일에 primary 서버의 정보와 standby 서버의 정보를 입력합니다.
IP를 사용하지 않고 등록된 서버 정보로 접속을 하기 위한 작업입니다.
2. Listener 설정
A) Net manager로 primary listener 수정
netmgr
Net Manager를 실행하여 static listener를 설정합니다.
직접 listener.ora 파일을 수정해도 됩니다.
Net Manger 화면에서 Oracle Net 구성의 로컬 부분을 클릭하여 확장합니다.
Primary는 데이터베이스 생성시에 listener가 이미 설정되어 있을 수 있습니다.
중앙 상단의 '수신 위치'를 '데이터베이스 서비스'로 변경해줍니다.
아래 버튼에서 <데이터베이스 추가> 버튼을 클릭합니다.
데이터베이스1 항목에 다음과 같이 정보를 입력합니다.
- 전역 데이터베이스 이름 : ORCL (서비스 명)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
<데이터베이스 추가> 버튼을 클릭하여 데이터베이스2를 추가한 후 다음과 같이 입력합니다.
- 전역 데이터베이스 이름 : ORCL_DGB (서비스 명_DGB)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
<데이터베이스 추가> 버튼을 클릭하여 데이터베이스3를 추가한 후 다음과 같이 입력합니다.
- 전역 데이터베이스 이름 : ORCL_DGMGRL (서비스 명_DGMGRL)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
Listener 설정이 모두 완료되었으면, 좌측 상단에 '파일' > '네트워크 구성 저장'을 클릭하여 작업한 내용을 저장합니다.
저장을 하게 되면 listener.ora 파일에 변경된 내용이 반영됩니다.
B) Primary의 listener.ora 파일
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-act)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) (SID_DESC = (GLOBAL_DBNAME = ORCL_DGB) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) (SID_DESC = (GLOBAL_DBNAME = ORCL_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) ) ADR_BASE_LISTENER = /u01/app/oracle
Primary 노드의 listener.ora 파일의 내용은 다음과 같이 변경됩니다.
Net Manager를 사용하지 않고 직접 listener.ora 파일을 수정해도 static listener를 추가할 수 있습니다.
C) Net Manager로 standby listener 생성
netmgr
Standby는 listener가 생성되어 있지 않을 수 있습니다. Net Manager로 listener 생성과 static listener 등록을 동시에 하게 됩니다.
Network Manger 화면에서 Oracle Net 구성의 로컬 부분을 클릭하여 확장합니다.
'리스너'를 선택하고 좌측 상단에 + 모양의 생성 버튼을 클릭합니다.
리스너 이름에 "LISTENER"를 입력하고 <확인>을 클릭합니다.
'수신 위치' 항목에서 <주소 추가>를 클릭하고 아래와 같이 선택 또는 입력합니다.
- 프로토콜 : TCP/IP
- 호스트 : ora-stb (standby 노드의 hostname)
- 포트 : 1521 (listener에서 사용할 포트번호)
<주소 추가> 버튼을 클릭하고 주소2 항목에 로컬 연결을 위한 내용을 추가로 선택 또는 입력합니다.
- 프로토콜 : IPC
- 키 : EXTPROC1521
중앙 상단의 '수신 위치'를 '데이터베이스 서비스'로 변경해줍니다.
아래 버튼에서 <데이터베이스 추가> 버튼을 클릭합니다.
데이터베이스1 항목에 다음과 같이 정보를 입력합니다.
- 전역 데이터베이스 이름 : ORCL_STB (서비스 명)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
<데이터베이스 추가> 버튼을 클릭하여 데이터베이스2를 추가한 후 다음과 같이 입력합니다.
- 전역 데이터베이스 이름 : ORCL_STB_DGB (서비스 명_DGB)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
<데이터베이스 추가> 버튼을 클릭하여 데이터베이스3를 추가한 후 다음과 같이 입력합니다.
- 전역 데이터베이스 이름 : ORCL_STB_DGMGRL (서비스 명_DGMGRL)
- Oracle 홈 디렉토리 : (ORACLE_HOME으로 지정된 경로)
- SID : orcl (데이터베이스의 SID)
Listener 설정이 모두 완료되었으면, 좌측 상단에 '파일' > '네트워크 구성 저장'을 클릭하여 작업한 내용을 저장합니다.
저장을 하게 되면 listener.ora 파일에 변경된 내용이 반영됩니다.
D) Standby의 listener.ora 파일
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-stb)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL_STB) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) (SID_DESC = (GLOBAL_DBNAME = ORCL_STB_DGB) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) (SID_DESC = (GLOBAL_DBNAME = ORCL_STB_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1) (SID_NAME = orcl) ) ) ADR_BASE_LISTENER = /u01/app/oracle
Standby 노드의 listener.ora 파일의 내용은 다음과 같이 변경됩니다.
Net Manager를 사용하지 않고 직접 listener.ora 파일을 생성해도 됩니다.
다만 static listener를 추가하지 않을 경우, Data Guard Broker를 통한 switchover 또는 failover 작업 시에 서비스 전환이 정상적으로 완료되지 않습니다.
E) 리스너 기동
lsnrctl start lsnrctl status
[oracle@orcl ~]$ lsnrctl start LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:16:19 Copyright (c) 1991, 2018, Oracle. All rights reserved. Starting /u01/app/oracle/product/18.3.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 18.0.0.0.0 - Production System parameter file is /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/ora-act/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-act)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora-act)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production Start Date 10-SEP-2018 15:16:19 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora-act/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-act)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "ORCL" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_DGB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_DGMGRL" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully [oracle@orcl ~]$ lsnrctl status LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:17:30 Copyright (c) 1991, 2018, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora-act)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production Start Date 10-SEP-2018 15:16:19 Uptime 0 days 0 hr. 1 min. 10 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora-act/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-act)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "64a52f53a7683286e053cda9e80aed76" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "755d92b0acb235ebe0534701000a49b5" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "ORCL" has 2 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Instance "orcl", status READY, has 1 handler(s) for this service... Service "ORCL_DGB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_DGMGRL" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "pdb" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
[oracle@orcl ~]$ lsnrctl start LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:17:59 Copyright (c) 1991, 2018, Oracle. All rights reserved. Starting /u01/app/oracle/product/18.3.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 18.0.0.0.0 - Production System parameter file is /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/ora-stb/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-stb)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora-stb)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production Start Date 10-SEP-2018 15:17:59 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora-stb/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-stb)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "ORCL_STB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_STB_DGB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_STB_DGMGRL" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully [oracle@orcl ~]$ lsnrctl status LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:18:25 Copyright (c) 1991, 2018, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora-stb)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production Start Date 10-SEP-2018 15:17:59 Uptime 0 days 0 hr. 0 min. 26 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora-stb/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-stb)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "ORCL_STB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_STB_DGB" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... Service "ORCL_STB_DGMGRL" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
listener.ora 파일을 모두 변경 또는 생성하였으면 listener를 기동해줍니다.
이미 기동 중인 listener가 있다면 정지한 후 재기동합니다.
3. Local Net Service Name 구성
A) Net Configuration Assistant 실행
netca
Net Configuration Assistant로 접속 정보를 변경 또는 생성합니다.
편집기를 이용해 직접 tnsnames.ora 파일을 생성하거나 수정할 수도 있습니다.
B) Primary 데이터베이스의 접속 정보 등록
'로컬 네트 서비스 이름 구성'을 선택하고 <다음>을 클릭합니다.
수행할 작업 선택에서 '추가'를 선택하고 <다음>을 클릭합니다.
Primary 노드의 경우 접속 정보가 저장된 tnsnames.ora 파일이 존재하면 다른 옵션들이 활성화되어 있을 수 있습니다.
Primary 데이터베이스의 접속 정보를 추가하기 위해 서비스 이름에 "ORCL"을 입력하고 <다음>을 클릭합니다.
Primary 노드의 경우 primary 데이터베이스의 접속 정보를 갖고 있을 수 있으므로, 그럴 때에는 standby 데이터베이스의 접속 정보만 추가하면 됩니다.
프로토콜은 'TCP'를 선택하고 <다음>을 클릭합니다.
호스트 이름에 primary 노드의 hostname인 "ora-act"를 입력합니다.
기본 포트 번호를 사용하려면 '표준 포트 번호 1521사용'을 선택하고 <다음>을 클릭합니다.
Primary의 데이터베이스와 listener가 open되어 있으면 테스트를 수행할 수 있습니다.
'예, 테스트를 수행합니다.'를 선택하고 <다음>을 클릭합니다.
초기에 입력된 접속 정보(계정, 암호)로는 접속이 되지 않을 수 있습니다.
<로그인 변경> 버튼을 클릭하여 데이터베이스에 접속할 계정과 암호를 바꿔줘야 합니다.
편의상 system 계정으로 테스트를 한다고 가정하고, 다음과 같이 입력한 후 <확인>을 클릭합니다.
- 사용자 이름 : system
- 암호 : (system 계정의 암호)
테스트가 성공되었으면 <다음>을 클릭합니다.
만약 실패하였다면, 반드시 문제를 해결해야 Data Guard를 정상적으로 사용할 수 있습니다.
네트 서비스 이름에 "ORCL"을 입력하고 <다음>을 클릭합니다.
C) Standby 데이터베이스의 접속 정보 등록
Standby 데이터베이스의 접속 정보를 추가합니다.
이 작업은 모든 노드에서 진행해야 할 것 입니다.
Standby 데이터베이스의 접속 정보를 추가하기 위해 서비스 이름에 "ORCL_STB"을 입력하고 <다음>을 클릭합니다.
프로토콜은 'TCP'를 선택하고 <다음>을 클릭합니다.
호스트 이름에 standby 노드의 hostname인 "ora-stb"를 입력합니다.
기본 포트 번호를 사용하려면 '표준 포트 번호 1521사용'을 선택하고 <다음>을 클릭합니다.
Standby 데이터베이스가 아직 생성되어 있지 않았으므로 테스트를 진행할 수 없습니다.
'아니오, 테스트를 수행하지 않겠습니다.'를 선택한 후 <다음>을 클릭합니다.
네트 서비스 이름에 "ORCL_STB"를 입력하고 <다음>을 클릭합니다.
모든 작업이 완료되었으므로, '아니오'를 선택한 후 <다음>을 클릭합니다.
완료 메시지를 확인하였으면 <다음> 버튼을 클릭합니다.
Net Configuration Assistant를 종료하기 위해 <완료> 버튼을 클릭합니다.
D) tnsnames.ora 파일
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-act)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) ORCL_STB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-stb)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL_STB) ) )
[oracle@orcl ~]$ tnsping ORCL TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:18:45 Copyright (c) 1997, 2018, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/18.3.0/db_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-act)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL))) OK (0 msec) [oracle@orcl ~]$ tnsping ORCL_STB TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 10-SEP-2018 15:19:00 Copyright (c) 1997, 2018, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/18.3.0/db_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora-stb)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL_STB))) OK (0 msec)
tnsnames.ora 파일은 다음과 같이 생성됩니다.
직접 편집기를 사용해서 tnsnames.ora 파일을 생성 또는 변경할 수도 있습니다.