본문 바로가기
프로그래밍/데이터베이스

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

by pentode 2018. 4. 20.

오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 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;

 

 

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

반응형