본문 바로가기
Database/Oracle

[ORACLE] TO_LOB() 함수로 VARCHAR2를 CLOB으로 변환하는 방법

by Papa Martino V 2025. 6. 6.
728x90

오라클 TO_LOB() 함수로 VARCHAR2를 CLOB으로 변환하는 방법
[Oracle] TO_LOB

1. TO_LOB() 함수란?

TO_LOB() 함수는 Oracle에서 LONG 또는 LONG RAW 데이터 타입을 LOB (Large Object) 타입(CLOB/BLOB)으로 변환하기 위해 사용됩니다. Oracle 11g 이후부터는 LONG 타입의 지원이 줄어들면서, TO_LOB() 함수는 마이그레이션 및 현대화에 중요한 도구로 자리 잡았습니다.

2. 사용 목적 및 필요성

  • 기존 LONG 칼럼을 LOB(CLOB/BLOB) 칼럼으로 변환하여 기능 확장
  • LOB 타입에서 지원되는 다양한 함수(DBMS_LOB 등)를 활용
  • LOB 데이터를 통한 대용량 텍스트, 이미지 처리 구조로 전환

3. 기본 문법

TO_LOB(long_column)

이 함수는 SELECT 문에서만 사용할 수 있으며, INSERT INTO... SELECT 구문과 함께 자주 사용됩니다.

4. 주요 제한사항

  • TO_LOB()는 SELECT 문 안에서만 사용할 수 있음
  • INSERT 대상 테이블은 LOB 타입 칼럼이어야 함
  • LOB 칼럼은 반드시 ENABLE STORAGE IN ROW 속성이 있어야 함
  • TO_LOB()는 직접 업데이트할 수 없음

5. 실무 예제

예제 1: LONG → CLOB 변환

-- 기존 테이블
CREATE TABLE legacy_table (
  id NUMBER,
  description LONG
);

-- 신규 테이블
CREATE TABLE new_table (
  id NUMBER,
  description CLOB
);

-- 데이터 마이그레이션
INSERT INTO new_table (id, description)
SELECT id, TO_LOB(description)
FROM legacy_table;

예제 2: LONG RAW → BLOB 변환

CREATE TABLE raw_table (
  id NUMBER,
  file_data LONG RAW
);

CREATE TABLE blob_table (
  id NUMBER,
  file_data BLOB
);

INSERT INTO blob_table (id, file_data)
SELECT id, TO_LOB(file_data)
FROM raw_table;

예제 3: VIEW를 이용한 임시 변환

CREATE OR REPLACE VIEW long_to_lob_view AS
SELECT id, TO_LOB(description) AS description
FROM legacy_table;

단, 이 VIEW는 DML(INSERT, UPDATE)을 지원하지 않습니다.

6. TO_LOB() 활용 시 고려사항

  • LOB 칼럼은 텍스트 인코딩 및 저장 방식이 다르므로, 데이터 손실 여부 확인 필요
  • 마이그레이션 후에도 인덱스, 제약 조건 등을 재정의해야 함
  • 대량 데이터 변환 시, COMMIT 단위로 배치 처리 권장
  • 테이블 크기 증가 가능성 → 테이블 스페이스 및 스토리지 정책 확인

7. TO_LOB()와 관련된 Oracle 함수 비교

함수 설명 용도
TO_LOB() LONG/LONG RAW → LOB(CLOB/BLOB) 변환 데이터 타입 마이그레이션
TO_CLOB() VARCHAR2 → CLOB 변환 텍스트 대용량 저장
TO_BLOB() RAW 또는 문자열 → BLOB 변환 이미지/이진 데이터 저장

8. LOB 활용의 이점

  • 4GB 이상의 데이터를 저장 가능
  • 다양한 문자셋 지원 (CLOB/NCLOB)
  • 이미지, 파일, 로그 등의 저장이 유연함
  • DBMS_LOB 패키지로 세밀한 처리 가능

9. 실전 적용 사례

금융 데이터 시스템에서는 과거 LONG 타입으로 저장되던 보고서 본문 데이터를 TO_LOB()를 통해 CLOB으로 전환한 후, FULLTEXT 검색텍스트 마이닝을 적용한 사례가 있습니다. 또한 전자문서 시스템에서는 문서 원본을 LONG RAW → BLOB으로 변환하여 파일 업로드 및 미리 보기 기능을 지원하게 되었습니다.

출처 및 참고 문서

  • Oracle 공식 문서: https://docs.oracle.com/en/database/
  • Oracle 21c SQL Language Reference
  • Oracle Database Advanced Application Developer's Guide
  • 현업 DBA 및 PL/SQL 개발자 실무 사례
728x90