상세 컨텐츠

본문 제목

[오라클] 데이터베이스 링크

Work/Study

by 물빛미르 2013. 3. 13. 15:39

본문

728x90

작업하고 있는 시스템의 DB와 사내 다른 두 시스템 C, Q가 데이터를 공유해야 한다.

이중 Q는 같은 서버의 오라클 인스턴스내에 있어서 테이블스페이스명만 앞에 붙여주면 접속이 가능한데,

C는 서버가 달라서 오라클의 데이터베이스 링크 기능을 이용하기로 했다.

 

검색해 보니 NLS_CHARACTER_SET이 다르면 DATA 입출력시 ?????로 나타난다는데, 이건 뭐 UTF-8로 통일되어 있으므로 문제 없을듯 하다.

 

기본 문법

 

CREATE DATABASE LINK <link_name>
     CONNECT TO <username> IDENTIFIED BY <userpass> USING <service_name>;

- link_name : 사용할 데이터베이스 링크명

- service_name : 네트워크 접속에 사용할 오라클 데이터베이스 네트워크 서비스명

- username, password : 접속 대상의 계정정보.

 

사용하는 service_name의 경우 tnsnames.ora 파일에 내용이 정의되어 잇어야 하는데, 그걸 한번에 할 수도 있다.

이부분을 한번에 하는걸 몰라가지고 삽질을 촘 ...했따.

 

CREATE DATABASE LINK <link_name>
    CONNECT TO <username> IDENTIFIED BY <userpass> USING

'(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST=192.168.0.99)(PORT = 1521)))

(CONNECT_DATA = (SID = <대상의 SID>)))';

 

 

예제========================================================================

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;

출처 : http://storing.tistory.com/56

728x90

관련글 더보기