기술 정보
home
채널 소개
home

DBLINK를 통한 CLOB BLOB 조회

문서 유형
기술 정보
분야
유틸리티
키워드
DBLINK
LOB
2 more properties

개요

Tibero 환경에서 DBLINK를 통해 CLOB 및 BLOB 데이터를 조회하려고 할 때 발생하는 문제와 이를 우회하는 방법에 대해 안내 합니다.
INSERT ~ SELECT * FROM 테이블@DBLINK 구문을 사용하여 로컬DB로 LOB데이터를 가져온 후 조회 수행합니다. 예제는 2대의 서버( TIBERO1, TIBERO2 ) 및 DBLINK 를 이용하여 테스트를 수행합니다,
참고
테스트는 아래와 같은 환경에서 진행하였습니다.
[tibero@T1:/]$ tbboot -v
Tibero 6 (DB 6.0 FS06_CS_1703)Linux stopbugs 2.6.9-89.ELsmp #1 SMP Mon Jun 22 12:31:33 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux version (little-endian)
Patch files (none)

방법

1. (TIBERO1) 테스트 테이블 생성

conn sys/tibero@tibero_v drop table tibero.bb1; create table tibero.bb1(c1 number, c2 clob, c3 blob); desc tibero.bb1; COLUMN_NAME TYPE CONSTRAINT ------------ ------- -------------------------- C1 NUMBER C2 CLOB C3 BLOB
SQL
복사

2. (TIBERO1) 테스트 테이블에 데이터 입력

insert into tibero.bb1 values(1,null,null); insert into tibero.bb1 values(2,empty_clob(),empty_blob()); insert into tibero.bb1 values(3,'test_record_3','48656C6C6F'||UTL_RAW.CAST_TO_RAW(' World!')); commit;
SQL
복사

3. (TIBERO1) 테스트 테이블에 데이터 조회

LOB 데이터 조회되지 않음을 확인합니다.
SQL> col c3 for a20 SQL> col c2 for a20 SQL> select c1,c2,utl_raw.cast_to_varchar2(dbms_lob.substr(c3,20,1)) c3 from tibero.bb1; C1 C2 C3 ---------- -------------------- -------------------- 1 2 3 test_record_3 Hello World!
SQL
복사

4. (TIBERO2) DBLINK 생성

TIBERO 2 서버의 tbdsn.tbr 파일에 TIBERO 1 서버접속정보를 'tibero_v' 라는 이름으로 추가 후 다음과 같이 수행합니다.
conn sys/tibero; Connected to Tibero. drop public database link p_remote; create public database link p_remote connect to tibero identified by tmax using 'tibero_v'; SQL> select owner, db_link, host from dba_db_links; OWNER DB_LINK HOST ---------- --------------- ---------- PUBLIC P_REMOTE tibero_v
SQL
복사

5.  (TIBERO 2) DBLINK 를 이용하여 LOB 데이터 조회

TBR-26020 에러가 발생하는 것을 확인할 수 있습니다.
select c1,c2,utl_raw.cast_to_varchar2(dbms_lob.substr(c3,20,1)) c3 from bb1@p_remote; TBR-26020: Cannot read a LOB object in a remote server.
SQL
복사

6. (TIBERO 2) 테이블 생성 및 데이터 입력

원격지DB의 LOB 데이터를 로컬 DB로 가져옵니다.
drop table tibero.bb1; create table tibero.bb1 as select * from bb1@p_remote where 1=2; insert into tibero.bb1 select * from bb1@p_remote; commit;
SQL
복사

7. (TIBERO 2) LOB 데이터 조회

로컬 DB에서 LOB 데이터 조회를 수행합니다.
SQL> col c2 for a20 SQL> col c3 for a20 SQL> select c1,c2,utl_raw.cast_to_varchar2(dbms_lob.substr(c3,20,1)) c3 from tibero.bb1; C1 C2 C3 ---------- -------------------- -------------------- 1 2 3 test_record_3 Hello World!
SQL
복사