본문 바로가기
개발언어/데이타베이스

Oracle DB link

by 창용이랑 2021. 6. 2.
728x90

 안녕하세요. 첫번쨰 포스트입니다.

 신입 초보 개발자인데.. 공부 하면서 자꾸 잊혀지는 것들을 포스팅 해볼 요량인데

효과가 있었으면 좋겠습니다.

 

 SI개발자로써 두번째 프로젝트 투입 전

DB링크란걸 해보게 될거같아 미리 공부해봅니다.

 

 

 

○ Oracle DB Link란

 

 말그래도 'LINK',  서로 다른 DB를 연결한다는 뜻입니다., 그리고 연결을 위한 타DB 접속설정을 정의하는 오라클 객체 를 DB Link라 합니다.

그냥 쉽게 다른 DB에 접근하는 걸 DB Link라 이해하면 될 것 같습니다.

 단, 이것은 Oracle DB만 가지고 있는 기술이고, 타DBMS와는 Link가 불가합니다.

 

 

 

 ○ Oracle DB Link 설정을 위한 조건

 

 우선 3가지 전제조건이 있습니다.

 

1. *Oracle Instance가 2개 이상이어야한다.

2. 연결할 두 DB의 *HOST NAME과 *ORACLE SID가 달라야한다.

3. *NLS_CHARACTER SET은 동일해야한다.

 

Oracle Instance : DBMS가 작업을 하는공간, 메모리 (Background Process와 SGA 메모리 영역을 일컫는다)

HOST NAME : 사용자 구분을 위해 만들어진 IP 대신 쉽게 사용하는 것.

ORACLE SID : 각 인스턴스는 고유의 이름

NLS_CHARACTER SET : 말그대로 문자 Character Set, 서로 다른 Charecter Set이면 조회시 문자가 꺠진다.

 

 

 

 ○ Oracle DB Link 생성을 위한 문법

 

CREATE DATABASE LINK 링크네임

CONNECT TO 유저네임 IDENTIFIED BY 패스워드 USING 서비스네임

 

ex)

-- 데이터베이스 링크 생성
SQL> CREATE DATABASE LINK test_server
     CONNECT TO scott IDENTIFIED BY tiger USING 'testdb';

-- USING다음에 testdb는 tnsnames.ora파일에 정의되어 있어야 한다.
====== tnsnames.ora =====
testdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 211.109.12.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracle)
    )
  )
=========================
 
-- 데이터베이스 링크를 통한 데이터의 조회..
SQL> SELECT ename FROM emp@test_server;
 
 
--시노님을 생성해서 사용하면 더욱더 편리하게 사용 할 수 있다. 
SQL> CREATE SYNONYM emplink FOR emp@test_server;   
 
 
-- 시노님을 통한 조회
SQL> SELECT ename FROM emplink;     
 
 
-- 데이터베이스 링크의 삭제..
SQL> DROP DATABASE LINK test_server;

 

출처 : https://chochochobodeveloper.tistory.com/1