본문 바로가기
[DATABASE]

[Oracle] DB Link

by METAVERSE STORY 2022. 7. 12.
반응형
728x170

 

■ 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
 출력결과
 

 

 

 

 

 

출처: https://wickedmagic.tistory.com/235

반응형
그리드형

댓글