AI/SQL

[SQL] 오라클, TNS, ping

brave_sol 2025. 5. 12. 17:33

1. 오라클

- 상용 관계형 데이터베이스 관리 시스템

클라이언트가 sqlplus user/pass@MYDB로 접속 요청
> Oracle은 tnsnames.ora에서 MYDB의 접속 정보 확인
> sqlnet.ora에 따라 접속 방식, 인증 방식 결정
> TNS 프로토콜을 통해 서버 연결 시도
> 연결 안되면 tnsping MYDB로 TNS 레베 ㄹ확인
> ping IP로 네트워크 연결 자체 확

 

2. TNS란?

- Tansparent Network Substrate

- 오라클에서 클라이언트와 서버 간의 통신을 위해 사용하는 고유의 네트워크 프로토콜 계층

- 역할: TCP/IP, Named Pipe, SDP 등 하위 물리 네트워크를 추상화

- Oracle Net(구 Net8, SQL*Net) 상위 계층과 네트워크 계층 사이에서 데이터를 중계

- 통신 방식은 보이지 않게 처리하므로 클라이언트는 내부 구조를 몰라도 연결 가능

 

1) TNS 프로토콜이 하는 일

- 접속 정보 파싱(tnsnames.ora, EZCONNECT, LDAP 등)

- 서버 리스너에 연결 요청

- 서버로부터 접속 허용 응답 수신

- SQL 요청을 캡슐화하여 전송, 응답 처리

- 통신 도중 오류/끊김 감지

 

2) TNS 레벨

- Oracle 자체적으로 사용되는 연결 또는 통신 상태의 단계적 개념

- tnsping에서 말하는 TNS 레벨은 Oracle Listener까지의 연결이 되는지 확인하는 1차 네트워크 확인 수준

- 네트워크 연결 확인(ping) : IP와 포트 레벨의 물리적 연결 확인(OS 차원), 예: ping 192.168.0.100

- 리스너 응답 확인(tnsping) : Oracle TNS 리스너가 응답하는지 확인 (tnsping 성공 = DB 서버까지 TNS 프로토콜로 통신 가능)

- 로그인+SQL 실행(sqlplus) : 사용자 인증 후 SQL이 사용 가능한가? 실제 Oracle DB 로그인, 인증(권한체크), 세션 생성(SQL 가능)

 

2. sqlnet.ora

- TNSNAMES로만 접속할지, LDAP 등을 사용할지 여기에 지정

SQLNET.AUTHENTICATION_SERVICES = (NONE)
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) -- 먼저 tnsnames.ora에서 찾고 없으면 ezconnect방식

- tnsnames vs ldap

항목 tnsnames ldap EZCONNECT
저장 위치 로컬 파일(tnsnames.ora) 중앙 서버(LDAP 서버)  
관리 방식 각 사용자 PC마다 파일 설정 한 곳에서 일괄 관리 가능  
복잡성 간단 서버 필요, 조직망 필요  
사용 환경 소규모/개인 기업/조직 내 대규모 환경  

 

1) tnsnames.ora

- 로컬 파일 기반 접속 방

- 오라클 클라이언트가 DB에 접속할 때 필요한 서버 주소, 포트, 서비스명 등의 정보를 담은파일

- 아래 설정이 있으면 sqlplus user/pass@MYDB 처럼 접속 가능

-- $ORACLE_HOME/network/admin/tnsnames.ora

MYDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

 

2) LDAP

- 접속 정보를 디렉터리 서버(LDAP 서버)에서 조회해 Oracle에 접속하는 방식

- Lightweight Directory Access Protocol

- 조직 내에서 사용자, DB, 시스템 설정을 중앙 서버에 저장하고 조회

- 예: ldap.ora 파일에 LDAP 서버 위치 설정

- 오라클 클라이언트가 로컬 tnsnames.ora가 아닌 LDAP 서버에서 접속 정보를 가져옴

- 장점: DB 접속 정보 중앙 관리 가능

- 수백 개 클라이언트가 있어도 tnsnames.ora 따로 관리할 필요 없음

 

 

 

5. tnsping

- Oracle에서 제공하는 DB 접속 확인용 유틸리티

- Oracle 접속 정보(tnsnames.ora)를 기반으로 DB 리스너가 살아있는지 확인

tnsping MYDB

 

6. ping

- OS 차원에서 네트워크 연결(물리적 연결)이 가능한지 확인하는 명령어

- Oracle과 직접 관련은 없지만, DB 서버 IP에 ping이 가는지로 네트워크 상태를 확인 가능

ping 192.168.1.10

 

- tns 접속 방식

- 네트워크 연결 정보

반응형