[Oracle]다른 네트워크 DBLink 연결하기, ORA-12154 tns 오류 (feat.DBeaver)

현서의 성장일지·2025년 4월 3일
0

SQL

목록 보기
8/14

데이터베이스 링크(Database Link)란

  • 내 데이터베이스에서 다른 데이터베이스에 접속할 수 있는 링크를 말한다.
    네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체이다.

  • 다른 DB에 특정 유저에 대한 링크를 만들어 해당 스키마에 테이블들을 접근하는 기술이다


데이터베이스 링크 연결하기

우선, 원격 서버의 tns 정보와 접속 유저의 정보를 가지고 있어야 한다.
여기서 코드를 간결하고 편하게 제작하고 싶으면 tns 파일에 별칭을 부여해 들고올 수 있다.

쉽게 말하자면 'A' DB에서 'B' DB로 DB Link 를 걸고자 한다면 우선 'A' DB의 TNSNAMES.ORA파일에 'B' DB 접속정보를 추가하는 것이다.
아래의 사진처럼 TNSNAMES.ORA파일에 별칭을 부여해서 접속정보를 넣고 사용할 수 있다.

--풀 버전
CREATE DATABASE LINK [DBLINK이름] 
CONNECT TO 원격유저명 IDENTIFIED BY "비밀번호"
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = [포트번호])))
(CONNECT_DATA = ( sid = [sid] )(service_name = [service_name])))';

--별칭 버전
CREATE DATABASE LINK [DBLINK이름] 
CONNECT TO 원격유저명 IDENTIFIED BY "비밀번호"
USING 'sung';



데이터 조회 및 삽입하기

  1. 조회하기
    데이터베이스 링크를 연결하였으면 아래의 쿼리를 활용해 상대방의 DB를 들고올 수 있다. 여기서 [테이블 명] 다음 '@'를 붙이고 [DBLINK이름]을 작성해야 한다.
SELECT * FROM [테이블 명]@[DBLINK이름];
  1. 삽입하기
    삽입하기도 insert문을 작성할 때 [테이블 명]@[DBLINK이름]를 작성해주면 된다.
INSERT INTO [테이블 명]@[DBLINK이름]
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES(99999999, '심청이', NULL, NULL, NULL, NULL, NULL, NULL);



ORA-12154 tns 오류

사진처럼 12154번 오류가 발생했다.
TNSNAMES.ORA 파일의 별칭을 설정할 때 맨 앞에 공백을 추가해서 오라클이 인식을 못 해 발생한 오류였다.

profile
초보 개발자의 기술 블로그

0개의 댓글