독서하는 개발자's Blog

반응형

1편의 시작 listener.ora

Oracle에서 listener.ora 와 tnsnames.ora 그리고 sqlnet.ora가 어떤역할을 하는지 자세하게 알아보자.

 

listener = 듣는사람

tnsnames = TNS(Transparent Network Substrate) names

 

위키피디아에서 보면

Transparent Network Substrate (TNS), a proprietary Oracle computer-networking technology, supports homogeneous peer-to-peer connectivity on top of other networking technologies such as TCP/IPSDP and named pipes. TNS operates mainly for connection to Oracle databases. 이라는 설명이 나오는데 

 

독점적인 Oracle 컴퓨터 네트워킹 기술인 TNS (Transparent Network Substrate)는 TCP / IP, SDP 및 명명된 파이프와 같은 다른 네트워킹 기술을 기반으로 동종의 P2P 연결을 지원합니다. TNS는 주로 Oracle 데이터베이스에 연결하기 위해 작동합니다. 라고 해석된다.

 

즉, 한마디로 오라클DB와 연결하기 위해 필요한 통신

 

<<조금은 생소한 용어들>>

명명된 파이프=> 파이트 통신이라고 검색해서 찾아보시면 됩니다.

P2P란, (Peer to Peer) 쌍방향 파일 전송 시스템

 

그렇다면 본격적으로 3개(listener.ora, sqlnet.ora, tnsnames.ora) 의 ora파일은 뭐하는 친구들인지 알아보자.

 


우리가 오라클다운을 받으면 다운받은 경로에서

=> product\11.2.0\dbhome_1\NETWORK\ADMIN 폴더로 들어가면

 

4가지 파일이 있습니다.

(직접 경로로 들어가서 파일을 열어보고 글을 같이보면 좋을 겁니다!)

 

listener.ora

기본적으로 리스너란?

외부에서 접속할 수 있도록 클라이언트와 DB를 연결해주는 역할

 

이 파일에 대해 알고 있어야할 3가지 요소

   1. listener.ora 파일에서는 여러개의 리스너를 구성할 수 있다.

   2. 이 파일은 <lsnr> / SID_LIST_<lsnr> 이라는 형태로 구성되는데, 여기서 <lsnr>은 리스너의 이름.

   3. 모든 파라미터와 값은 대소문자를 구분하지 않는다.

 

<lsnr>에 대한 더 자세한 설명

   1. 이 파라미터는 리스너의 이름과 수신주소(들)을 명시한다.

   2. <lsnr>에 리스너명을 명시하지 않으면, 기본 리스너명이 "LISTENER" 로 표기가 되고 기본 형태는 아래와 같다.

 

# LISTENER =
#  (ADDRESS_LIST=
# (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
# (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))


SID_LIST_<lsnr>에 대한 더 자세한 설명

   1. 리스너가 알고 있고 클라이언트를 연결할 수있는 서비스 목록.

   2. 클라이언트와 오라클 DB를 연결해주는 친구 / 기본 형태는 아래와 같다.

# SID_LIST_LISTENER=
#   (SID_LIST=
# (SID_DESC=
# #BEQUEATH CONFIG
#          (GLOBAL_DBNAME=salesdb.mycompany)
#          (SID_NAME=sid1)
#          (ORACLE_HOME=/private/app/oracle/product/8.0.3)
# #PRESPAWN CONFIG
#         (PRESPAWN_MAX=20)
#   (PRESPAWN_LIST=
#           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
#         )
#        )
#       )


리스너 로그 관련

LOG_FILE_<lsnr>

   1. 위 입력폼을 사용하여 리스너의 로그파일 이름을 세팅할 수 있다.

   2. 리스너 명<lsnr> 만 지정해주면 .log 확장자가 자동으로 추가된다.

   3. 기본 파일명 : Default=<lsnr>

 

LOG_FILE_<lsnr>의 예제

LOG_FILE_LISTENER = lsnr

뜻 : <lsnr>자리에 리스너명으로 기본값인 LISTENER가 들어간것이고 로그파일이름은 lsnr로 하겠다.


LOG_DIRECTORY_<lsnr>

   1. 리스너 로그파일의 디렉터리를 지정해준다.

   2. 기본 경로 : <oracle_home>/network/log

 

LOG_DIRECTORY_<lsnr>의 예제

LOG_DIRECTORY_LISTENER = /private/app/oracle/product/8.0.3/network/log

뜻 : <lsnr>자리에 리스너명은 기본값인 LISTENER이고 로그파일디렉터리 경로는 <oracle_home>/network/log.


리스너 보안 관련

리스너는 개인적으로 보안이 아주 중요하다고 생각하는데, 그 이유는 db에 관련된 정보와 리스너 포트만 알면 악의적으로 리스너를 정지시킬 수가 있기 때문이다.

 

그렇기 때문에, 리스너도 패스워드를 걸어줄수가 있다.

PASSWORDS_<lsnr>

   1. 리스너를 중지하기 위한 비밀번호를 세팅한다.

   2. 암호화 된 값과 일반 텍스트 값을 모두 설정할 수 있다.

   3. lsnrctl을 사용하여 암호화 된 암호를 설정하고 저장할 수 있다.

   4. 기본 값 : NONE

 

lsnrctl에 관해서 접속하는 방법은 각자 찾아보기로 하자

 

아래는 패스워드를 걸어주는 방법

#     LSNRCTL> change_password

=> 이전 암호와 새 암호를 묻는 메시지가 표시, 이전 암호와 일치하면 새 암호 설정

=> 이전에 암호가 없다면 enter만 누르면 된다.

#     LSNRCTL> set password

=> 리스너 인증을 위해 새 암호를 입력하라는 메시지가 표시.

=> 다음 명령을 실행하기 전에 암호를 설정해야한다.

#     LSNRCTL> save_config

=> 변경된 비밀번호를 listener.ora에 저장.

 

listener.ora 파일에 PASSWORDS_<lsnr>를 직접 지정해주면 암호화 문제가 있기때문에

암호화 하기위해서는 아래와 같은 방법으로 실행을 해준다.

 

   1. lsntrl에 접속

   2. change_password

   3. set password (2단계에서 지정한 패스워드입력)

   4. save_config

   5. stop

 

이 글은 listener.ora 파일과 함께보면 더욱더 이해가 잘될겁니다.

이해가 안되거나 모르시는 부분 있으시면 댓글로 남겨주세요!

 

다음엔 tnsnames.ora파일에 대한 설명을 올리겠습니다

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band