DB

[Oracle] DB link CLOB 타입 오류

ChanPumpkin 2022. 9. 29. 23:06

ORACLE DB link CLOB 오류 발생

오류 발생

Oracle에서 테이블을 DB link 방식으로 연결해서 SELECT를 해야 하는데, CLOB 컬럼은 데이터베이스 링크로 테이블 컬럼 조회가 안 되는 문제가 발생하였다.

LOB타입

그전에 LOB타입에 대해서 먼저 알아야 할 거 같다.

 

LOB 타입은 Large Object라는 의미로서, 대용량의 데이터를 저장하고 관리하기 위해서 오라클에서 제공하는 타입이다. 사진, 영상 등의 대용량 데이터도 DB로 처리할 수 있도록 하기 위해 생겨난 타입

LOB타입 종류

BLOB Internal 바이너리 데이터 저장 (최대 4G 저장) 컴퓨터가 인식하는 모든 파일 기록
CLOB Internal Single-byte character data 저장(최대 4G 저장) 텍스트 데이터 저장
NCLOB Internal Multi-byte character data 저장(최대 4G 저장) NCHAR data와 같은 national character set(9i 이상 유니코드)
BFILE External(OS) OS 파일에 저장된 데이터의 포인터 저장 (최대 4G 저장) READ ONLY

왜 오류가 발생..?

오라클에서는 LOB 타입에 대해 원격지 DB 간의 조회-삽입(수정)을 지원하지 않기 때문에, 발생하는 문제

해결 방법

로컬에 원격지의 테이블을 만들어준다.

create table temp_원격테이블
as
select * from 원격테이블@DB링크명
where 1=2;

 

원격지 테이블을 그대로 insert해온다.

insert into temp_원격테이블
select * from 원격테이블@DB링크명

 

이제 로컬 테이블에서 사용한다.

select * from temp_원격테이블
where rownum = 1;

참조

https://blog.naver.com/nolbudr/150030600887

https://ooz.co.kr/280

http://www.gurubee.net/lecture/2768