오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 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;
오라클에서 데이터베이스 링크를 생성하고 사용하는 방법을 알아보았습니다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
오라클 MERGE INTO 문으로 있으면 UPDATE 없으면 INSERT 한번에 수행하기 (9) | 2018.04.20 |
---|---|
오라클 문자열에서 숫자만 남기고 다른 문자 제거하기 (2) | 2018.04.20 |
Oracle 테이블 및 프로시저 생성 스크립트 추출하기 (0) | 2018.04.20 |
Oracle Sequence 만들기 (일련번호 생성하기) (0) | 2018.04.20 |
Oracle에서 테이블 복사하기 (0) | 2018.04.20 |