창용이랑 2021. 6. 2. 16:43
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