[SQL] 오라클, TNS, ping
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 접속 방식
- 네트워크 연결 정보