본문 바로가기

배우기/복습노트[oracle sql]

[복습] SQL | Oracle database간의 link인 DB Link

728x90
반응형

DB Link란 database 끼리의 link로 DB간의 데이터 이동이나 다른 DB의 데이터 수정 등을 가능하게 한다.

사전에 DB와 DB가 통신할 수 있게 방화벽이 허용되어야 한다.

 

예를들어 SCOTT 소유의 EMP가 있는데 HR이 이 테이블을 조회하려고 한다. 그래서 HR이 EMP라는 이름으로 조회가 가능하게끔 경로를 만드는 것이 synonym이다. 이 때에는 타겟 테이블인 EMP가 로컬에 있는 상황이었다(같은 DB안에 있음). 그런데 다른 DB에 있는 A라는 계정 소유의 T1 테이블이 있다. HR이 T1을 조회하게 하고 싶을 때, 원칙적으로는 불가하나 이걸 허용하는 것이 DB Link이다. DB간의 연결 통로를 만드는 것이다. 이 때에는 SELECT문을 날리는 순간 다른 DB에 붙어서 테이블의 원하는 정보를 가져와 나의 화면에 보여주게 된다. 다른 DB에 접속을 해야하는 상황이므로 타겟 DB 정보 5가지(시스템 정보: IP, PORT, SID, 유저정보: USERNAME, PW)가 필요하다.

 

 

1. DB Link 생성(DB도 객체이므로 CREATE로 생성)

문법은 아래와 같다.

 

방법 1) TNS_NAME 자리에 TNS_DESCRIPTION을 나열

 

방법 2) TNS_NAME 자리에  $ORACLE_HOME/NETWORK/ADMIN/TNSNAMES.ORA 파일의 TNS명 전달

 

 

2. DB Link를 사용한 원격 DB의 데이터 조회

 

이렇게 하면 원격 DB 데이터가 조회되는데 지금은 원격 DB방화벽이 차단되어서 결과를 볼 수가 없다.

 

3. DB Link를 사용한 Synonym 생성

이렇게 Synonym을 생성하면 SCOTT.TEST11@LINK1; 하여 테이블을 출력하지 않고 바로 T11로 생성이 가능하다.

 

 

연습문제. 타DB에 있는 PRODUCT2 테이블과 JOIN하여 일자별 총 판매량과 총 매출을 출력하여라.

 

이런식으로 풀었고 지금 타 DB는 방화벽이 활성화되어 접속이 불가하여 쿼리만 싣는다.

 

링크를 지울 때에는

DROP PUBLIC DATABASE LINK LINK_NAME;

 

Synonym을 지울 때에는

DROP PUBLIC SYNONYM SYNONYM_NAME;

 

 

DB Link는 여기까지이다.

728x90
반응형