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

DBLink 이유 사용법

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

Dblink

Rolizen Technet

Jump to: navigation, 찾기

목차[숨기기]

[편집] DB Link란?

  • 물리적으로 다른 위치의 있는 Oracle Database를 마치 자신의 Database내에 있는 것처럼 사용할 수 있도록 Link를 걸어 놓는것
  • 주 사용처
    • 타 DB의 데이터를 쉽게 취득할 수 있음
    • Data 마이그레이션 작업시 유용하게 사용되어 질 수 있음
    • 주기적인 외부 데이터 취득시 사용
  • 주의 사항
    • 실질적으로는 외부 네트윅으로 데이터를 전송하므로, 네트윅 부하가 유발될 수 있으며, 네트윅 상황에 따라서 쿼리 실패가 될 수도 있으므로 실시간 서비스에서는 사용을 자제해야 한다.

[편집] DB Link 사용방법

테이블 표시 : 테이블명@DB링크이름
일반 테이블과 동일하게 사용하면 된다.
단, 상대편 DB 권한설정에 따라서 몇가지 명령(ddl명령)에서는 DB Link가 허용되지 않는 부분이 있으므로 주의!

[편집] DB Link 생성 및 삭제 방법

  • 선행작업

연결할 DB에서 연결할려는 DB로의 TNS(로컬네트워크 서비스)설정을 먼저 해 주어야 한다.

  • DB Link 생성

CREATE [public | private] DATABASE LINK {사용할 링크 이름} CONNECT TO {접속 아이디} IDENTIFIED BY {접속 암호} using '{연결 문자열}';

public일 경우, 모든 사용자가 사용할 수 있으며, private일 경우에는 생성한 사용자만 사용할 수 있다. 링크 이름을 지정하는데, 숫자가 먼저 올 수 없다.

  • DB Link 삭제하기

DROP [public | private] DATABASE LINK {삭제할링크 이름}; [편집] 예제

  • 시나리오
    • jampy Database에서 jserver Database로 DB Link를 생성

CREATE public DATABASE LINK reo_test CONNECT TO blog IDENTIFIED BY blog using 'JSERVER_XE' // JSERVER_XE는 jampy가 jserver로 연결할 TNS(로컬네트워크 서비스)명 // reo_test는 쿼리에서 사용할 Link 이름

         -jampy에 다음과 같은 테이블을 생성한다.

 

CREATE TABLE dblink_test( name varchar(20) , nickname varchar(20) );

        -jserver blog계정에 다음과 같은 테이블을 생성한다

 

CREATE TABLE caller_dblink_test( id varchar(20) , age varchar(20) );

        -jampy caller_dblink_test와 jserver dblink_test 두 테이블을 조인해서 정보를 취득

 

SELECT a.id,a.age,b.name FROM caller_dblink_test a,dblink_test@reo_test b WHERE a.id=b.id // id 및 age는 jampy database에서 취득을 하고, name값은 jserver database에서 취득을 하는 쿼리

 

 

 

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ssamdaengi&logNo=70031209195