본문 바로가기

Oracle/Oracle Programming

[Oracle] DB Link

반응형

■ DB Link(Database Link)란?



 -. 데이터베이스 링크(Database Link, 이하 DB Link)는 다음 조건을 만족하는 데이터베이스 서버들을 연동하여,

    사용자 요구가 있을 때 각 데이터베이스 서버의 개별 자료를 통합, 처리하는 기술이다.

 -. 연동되는 데이터베이스 서버들은 다음과 같은 조건을 만족해야 한다.
  ① 상호 논리적인 관계로 구성
  ②  컴퓨터 통신망에 연결
  ③ 지역적인 분리


 -. 논리적인 관계가 있다는 것은 개별 서버에 분산된 데이터들이 서로 상관 관계를 가지고 있어야 하고,

    연산에 필요한 권한 등이 부여되어 있다는 것을 의미한다.

    (개별 서버에 분산된 데이터 원본들을 한곳으로 모았을 경우, 데이터가 중앙집중적으로(Centralized) 구성될 수 있어야 한다.)
 -. 네트워크에 연결된다는 것은 하드웨어와 소프트웨어를 통하여 서로 접근이 가능한 상태를 의미한다.

    (그 범위는 가깝게는 인트라넷 혹은 동일 서브넷이며 멀리는 WAN 또는 인터넷이다.)
 -. 지역적으로 분리되었다는 것은 데이터 서비스를 제공하는 주체, 즉 데이터베이스 서버가 서로 독립적으로 동작이 가능하도록 구축되었다는 의미이다.

    (근거리에 위치한 하드웨어 플랫폼에서 개별적으로 구성된 사이트까지 포함한다.)





01. system 계정으로 접근하여 DB_Link에 붙을 사용자 ID에 권한을 부여한다.

 풀이

 GRANT CREATE PUBLIC DATABASE LINK, DROP PUBLIC DATABASE LINK TO 사용자 이름;

 예제

 GRANT CREATE PUBLIC DATABASE LINK, DROP PUBLIC DATABASE LINK TO scott;

 출력결과
 




02. Oracle 설치 경로의 'tnsnames.ora'파일을 텍스트 편집기로 오픈한다.

     (경로 : C:\oracle\product\10.2.0\db_1\network\ADMIN)




03. 로컬 'A' DB의 tnsnames.ora 파일에 원격지 'B'DB 접속 정보를 추가한다.

풀이
 서비스 이름 =

 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 원격 서버 IP Address)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = PLSExtProc)
      (SERVICE_NAME = 원격서버 접속이름))
    )
 )

 예제
 LINK_NAME =

 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 00.00.000.00)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = PLSExtProc)
      (SERVICE_NAME = LINKNAME)
    )
 )




04. DB Link 연결 여부 확인하기.

 풀이

 SQL> SQLPLUS 원격서버 사용자 ID / 원격서버 사용자 Password @ 서비스 이름

 예제

 SQL> SQLPLUS control_id(가제) / control_pw(가제) @ LINK_NAME

 출력결과
 



05 - 1. DB Link 설정 명령

 설정

 CREATE [PUBLIC] DATABASE LINK DB LINK 이름

 CONNECT TO 원격서버 사용자 ID

 IDENTIFIED BY 원격서버 사용자 Password

 USING '서비스 이름'

 예

 CREATE [PUBLIC] DATABASE LINK db_link

 CONNECT TO control_id(가제)

 IDENTIFIED BY control_pw(가제)

 USING 'LINK_NAME'
 출력결과
 

DB Link 연결시 ORA-01017, ORA-02063 에러 발생한 경우...



05 - 2. tnsnames.ora 설정 없이 DB Link를 설정하는 방법

 풀이

 CREATE [PUBLIC] DATABASE LINK DB LINK 이름

 CONNECT TO 원격서버 사용자 ID

 IDENTIFIED BY 원격서버 사용자 Password

 USING

'

 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 원격 서버 IP Address)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = PLSExtProc)
      (SERVICE_NAME = 원격서버 접속이름))
    )
 )

'

 예제
 CREATE [PUBLIC] DATABASE LINK db_link

 CONNECT TO scott

 IDENTIFIED BY tiger

 USING

  '(DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 00.00.000.00)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = PLSExtProc)
        (SERVICE_NAME = LINKNAME)
    )'

 출력결과
 




05. DB Link 사용

 풀이

 SELECT * FROM 원격 DB 테이블명@DB LINK 이름

 예제

 SELECT * FROM emp@db_link

 출력결과
 




06. DB Link 삭제

풀이

 DROP DATABASE LINK DB LINK 이름
 예제

 DROP DATABASE LINK db_link

 출력결과
 



반응형

'Oracle > Oracle Programming' 카테고리의 다른 글

[Oracle] PL/SQL 변수  (0) 2013.02.06
[Oracle] PL/SQL 구조  (0) 2013.02.05
[Oracle] DB Link 연결시 ORA-01017, ORA-02063 에러 발생  (1) 2013.01.25
[Oracle] 사용자 관리  (0) 2013.01.23
[Oracle] 조인 예제  (3) 2012.11.28