행위

오라클 리스너 SQLNET 설정

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 10월 26일 (토) 17:24 판 (listener.ora)
thumb_up 추천메뉴 바로가기


1 HA 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 데이터베이스 리스너 리소스를 SUNW.oracle_listener 리소스 유형으로 만들기에 대한 후속 지침을 무시해도 됩니다. SCAN 리스너가 구성된 경우 Oracle 데이터베이스 리스너 리소스는 필요하지 않습니다.

SCAN 리스너에 대한 자세한 내용은 사용 중인 Oracle Grid Infrastructure 소프트웨어 버전에 해당하는 Oracle Grid Infrastructure 설치 설명서를 참조하십시오.

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 매개변수를 설정합니다.

SQL> alter system set local_listener='' scope=both;
System altered.

local_listener 매개변수 설정이 올바른지 확인합니다.

SQL> show parameters local_listener

remote_listener 매개변수가 SCAN 이름과 포트 번호를 참조하는지 확인합니다. remote_listener 매개변수에 SCAN 이름과 포트 번호가 포함되어 있는지 여부를 지정합니다.

phys-schost$ srvctl config scan

SCAN name: SCAN-name, Network: network-number
…
phys-schost$ srvctl config scan_listener

SCAN Listener LISTENER_SCAN1 exists. Port: TCP:port-number
…

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

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)
    )
  )


2 오라클 접속 정보 설정(listener.ora, sqlnet.ora, tnsnames.ora)[편집]

  • tnsnames.ora 와 listner.ora

tnsnames.ora 파일은 client에서 Oracle server에 접속할 때 client 에 설정하는 파일. listener.ora 파일은 client가 Oracle server에 접속 server 에 설정 파일.

2.1 listener.ora[편집]

- 위치: 서버에서 $ORACLE_HOME/network/admin/listener.ora - 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일 - 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 파일 - 설정형식:

LISTENER = 
        (DESCRIPTION_LIST = 
              (DESCRIPTION = 
                  (ADDRESS_LIST = 
                        (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip)(PORT = 포트번호)) 
                  ) 
                     )
         ) 
     SID_LIST_LISTENER = 
        (SID_LIST = 
            (SID_DESC = 
                 (SID_NAME = SID_name) 
                 (ORACLE_HOME = 오라클위치) 
            ) 
        ) 
   #로컬 리스너 설정 
   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 : lsnrctl status

2.2 tnsnames.ora[편집]

- 위치: 클라이언트에서 $ORACLE_HOME/network/admin/tnsnames.ora - 클라이언트에서 오라클 서버로 접속할 때 필요한 프로토콜 및 포트번호, 서버주소, 인스턴스등을 설정해주는 파일 - 설정형식:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )
  • ORCL : 서비스이름(클라이언트에서 보이는)
  • DESCRIPTION : 접속하는 대상 데이터베이스 정보
  • ADDRESS : 접속하는 데이터베이스 서버의 리스너 주소
  • CONNECT_DATA : SERVICE_NAME 옵션을 이용하여 접속할 리스너 프로세스가 사용하는 서비스 이름을 지정하거나
               , SID옵션을 이용하여 데이터베이스의 SID명을 지정

- 상태 확인 command : tnsping TNS명 횟수

2.3 sqlnet.ora[편집]

  • 위치 : 서버에서 $ORACLE_HOME/network/admin
  • 클라이언트가 오라클 서버로의 접속 방식을 설정하는 파일
  • 설정 형식 : SQLNET.AUTHENTICATION_SERVIVCES = {none | NTS}

-> 클라이언트가 오라클 서버로 접속할 때 오라클이 어떠한 인증 서비스를 사용할 것인가?

   NTS : 윈도우 인증 
   none으로 설정하면 sys 계정로 login할 때, 반드시 암호를 입력해야 들어갈 수 있음
   (none일때 sqlplus / as sysdba; sqlplus /nolog 로 접속불가능)
  

NAMES.DIRECTORY_PATH = {tnsnames | onames | hostname} -> 클라이언트가 디비 접속 시 사용하는 string name alias를 무엇을 통해 확인할 것인지 설정.

      1. tnsnames 로컬네임서버
        1. tnsnames는 tnsnames.ora 파일의 정보를 이용하여 확인.
        2. onames 오라클 네임서버
        3. hostname 호스트네임서버

AUTOMATIC_IPC = ON -> AUTOMATIC_IPC = { ON | OFF } ON으로 되어 있는경우 SQL*Net이 같은 alias정보를 가진 local database가 있는지 check

TRACE_LEVEL_CLIENT = OFF -> client쪽에 trace 설정 방법