오라클 데이터베이스 링크 생성하기

프로그래밍/데이터베이스 2018. 4. 20. 22:18
반응형

오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 PUBLIC 데이터베이스 링크와 링크를 만든 계정에서만 사용할 수 있는 PRIVATE 링크가 있습니다. 데이터베이스 링크를 만들고 사용하는 방법을 알아보겠습니다.



1. 데이터베이스 링크 생성 권한


SYSTEM 계정으로 로그인하여 권한을 줍니다.


-- TESTDBADM 계정이 PRIVATE 데이터베이스 링크를 만들 수 있게 권한을 줌.

-- PRIVATE 링크는 CREATE 권한만으로 생성과 삭제를 할 수 있습니다.

GRANT CREATE DATABASE LINK TO TESTDBADM;


-- TESTDBADM 계정이 PUBLIC 데이터베이스 링크를 만들 수 있게 권한을 줌.

GRANT CREATE PUBLIC DATABASE LINK TO TESTDBADM;


-- TESTDBADM 계정이 PUBLIC 데이터베이스 링크를 삭제할 수 있게 권한을 줌.

GRANT DROP PUBLIC DATABASE LINK TO TESTDBADM;



2. 데이터베이스 링크를 생성


TESTDBADM 계정으로 로그인하여 SID 가 XE인 오라클 인스턴스의 아이디와 비밀번호가 TEST2DBADM인 계정으로 데이터베이스 링크를 생성합니다.


-- 이름이 TLINK 인 데이터베이스 링크 생성

CREATE DATABASE LINK TLINK CONNECT TO TEST2DBADM IDENTIFIED BY TEST2DBADM USING 'XE';


이 데이터베이스 링크를 TESTDBADM 계정에서만 사용할 수 있습니다. XE 가 원격일 경우에는 tnsnames.ora 파일에 등록되어 있어야 합니다. 생성 스크립트에 연결정보를 직접 입력하여 사용하는 방법도 있습니다.


CREATE DATABASE LINK TLINK CONNECT TO TEST2DBADM IDENTIFIED BY TEST2DBADM USING

'(DESCRIPTION =

  (ADDRESS_LIST =

    (ADDRESS = 

      (PROTOCOL = TCP)

      (HOST = 192.168.0.5)

      (PORT = 1521)

    )

  )

  (CONNECT_DATA =

    (SERVICE_NAME = XE)

  }

)';


-- 데이터베이스 링크 삭제

DROP DATABASE LINK TLINK;



3. 데이터베이스 링크 사용하기


TESTDBADM 계정으로 앞에서 만들 TLINK를 사용하여 TEST2DBADM 계정이 가진 TB_BOARD 테이블을 조회합니다. 테이블 명 뒤에 @링크명을 붙여주면 됩니다.


SELECT * FROM TB_BOARD@TLINK;



4. 데이터베이스 링크로 CLOB데이터 읽기


데이터베이스 링크로 CLOB 데이터를 읽으면 에러가 발생합니다. 이 경우 사용할 수 있는 방법 입니다. TB_BAORD 테이블의 CONTENT 필드가 CLOB이라고 가정합니다.


4.1 DBMS_LOB.SUBSTR() 함수로 4000바이트로 자른 뷰를 생성


-- TEST2DBADM  계정으로 뷰 생성

CREATE OR REPLACE FORCE VIEW VW_BOARD 

(NUM, NAME, TITLE, CONTENT, READ_COUNT, WRITE_DATE)

AS

SELECT NUM, NAME, TITLE, DBMS_LOB.SUBSTR(CONTENT,4000,1), READ_COUNT, WRITE_DATE

  FROM TB_BOARD;


-- TESTDBADM 계정에서 링크를 통해 뷰를 읽습니다.

SELECT * FORM VW_BOARD@TLINK;



4.2 링크를 통해 임시 테이블로 복사후 읽는 방법 입니다.


-- TESTDBADM 계정에서 링크를 통해 테이블을 복사합니다.

CREAT TABLE TMP_BOARED AS SELECT * FROM TB_BOARD@TLINK;


-- 복사된 테이블을 읽습니다.

SELECT * FROM TMP_BOARD;



오라클에서 데이터베이스 링크를 생성하고 사용하는 방법을 알아보았습니다.

반응형

댓글을 달아 주세요