상세 컨텐츠

본문 제목

[Oracle] 오라클 클라이언트 TNS 설정, SQL 파일 실행 및 방화벽 문제 해결 완벽 가이드 (Windows -> Linux)

DB_SQL

by 나야홍박사 2026. 3. 17. 17:12

본문

가상 머신(VMware) 환경이나 실무 서버 구축 시, 리눅스(Linux)에 오라클 19c 서버를 띄워두고 윈도우(Windows) 클라이언트에서 원격으로 접속해야 하는 경우가 많습니다.

오늘은 윈도우 환경에서 tnsnames.ora 파일을 통해 원격 DB와 연동하는 방법, 만들어둔 .sql 스크립트를 실행하는 방법, 그리고 가장 많이 겪는 'tnsping 무한 대기' 방화벽 에러 해결법까지 한 번에 정리해 보겠습니다.

1. SQL 스크립트 파일 실행하여 데이터 셋팅하기

미리 메모장 등으로 작성해 둔 테이블 생성 및 데이터 삽입용 스크립트 파일(예: school.sql)이 있다면, SQL*Plus를 통해 한 번에 실행할 수 있습니다.

  1. 윈도우 **명령 프롬프트(CMD)**를 엽니다.
  2. 관리자 계정이나 권한이 있는 계정으로 오라클에 로컬 접속합니다.
  3. SQL> 프롬프트가 뜨면, 파일의 절대 경로 맨 앞에 @ (골뱅이) 기호를 붙여서 실행합니다.
SQL
 
-- 실행 예시 (반드시 @를 붙여야 파일로 인식합니다)
SQL> @C:\Users\st\school.sql

스크립트가 정상적으로 돌면 "테이블이 생성되었습니다", "1 행이 작성되었습니다"라는 메시지가 출력되며 세팅이 완료됩니다.


2. tnsnames.ora 파일 등록 (환경 변수 TNS_ADMIN 설정)

원격지 서버에 있는 DB에 접속하려면 오라클의 전화번호부 역할을 하는 tnsnames.ora 파일이 필요합니다.

가장 확실한 적용 방법은 윈도우 시스템 환경 변수에 파일의 위치를 직접 선언해 주는 것입니다.

  1. 윈도우 검색창에 '환경 변수' 검색 ➔ [시스템 환경 변수 편집] 실행
  2. 창 하단의 [환경 변수] 버튼 클릭
  3. '시스템 변수' 탭에서 [새로 만들기] 클릭
  4. 아래와 같이 입력합니다.
    • 변수 이름: TNS_ADMIN
    • 변수 값: C:\Users\st (🚨 주의: tnsnames.ora 파일명이 들어가면 안 됩니다! 파일이 위치한 폴더(디렉토리) 경로까지만 적어야 합니다.)
  5. 열려있는 모든 CMD 창을 닫고 새로 열어야 설정이 적용됩니다.

3. 연결 테스트 (tnsping) 및 방화벽 문제 해결

TNS 설정이 끝났다면, 내가 설정한 별칭(Alias)으로 핑이 제대로 나가는지 테스트해야 합니다.

DOS
 
C:\> tnsping dal

❌ 에러 케이스 1: TNS-03505: Failed to resolve name

오라클이 tnsnames.ora 파일을 찾지 못했거나, 파일 안의 문법이 틀린 경우입니다. TNS_ADMIN 환경 변수 경로에 오타가 없는지, CMD 창을 새로 띄웠는지 다시 확인합니다.

❌ 에러 케이스 2: 응답 없이 커서만 깜빡이는 무한 대기 (Hanging) 상태

파일은 정상적으로 찾았고 리눅스 서버까지 도달했으나, 리눅스 서버의 방화벽이 오라클 포트(1521)를 막고 있는 상황입니다. 리눅스 서버 터미널로 접속하여 root 권한으로 방화벽을 열어주어야 합니다.

Bash
 
# 리눅스 터미널 (root 계정)
$ firewall-cmd --add-port=1521/tcp --permanent
$ firewall-cmd --reload

만약 방화벽을 열 권한이 없는 실습 서버라면, 관리자나 강사님께 "1521 포트 개방"을 요청해야 합니다.

🟢 성공 케이스: OK (30 msec)

방화벽이 정상적으로 열려있고 리스너가 살아있다면, 아래와 같이 밀리초 단위의 응답 속도와 함께 OK 사인이 떨어집니다.

DOS

 

확인(30밀리초)  -- (영문판: OK (30 msec))

4. 최종 원격 DB 접속 및 확인

tnsping 테스트가 성공했다면 고속도로가 뚫린 것입니다! 윈도우 CMD 창에서 바로 접속을 시도합니다.

DOS
 
C:\> sqlplus 계정명/비밀번호@TNS별칭
-- 예시: sqlplus st06/1234@dal

SQL> 프롬프트가 뜨면 접속 성공입니다. 이제 SELECT * FROM TAB; 명령어를 통해 1번 단계에서 만들어둔 테이블들이 잘 존재하는지 확인하며 자유롭게 SQL 쿼리를 테스트해 보세요!