티스토리 뷰

ALL

LOB

whoAmI_ 2022. 11. 29. 11:54

 

LOB (Large OBject)

 

- LOB는 TEXT, 그래픽, 이미지, 비디오, 사운드 등 구조화되지 않은 대형 데이터를 저장하는데 사용한다.

- 크기가 큰 데이터는 DB에 저장하기 힘들기 때문에 OS상 존재하는 파일을 데이터베이스가 접근하게 된다.

- LONG, LONG RAW 데이터 유형은 예전에 사용하던 것이고, 현재는 대부분 LOB 데이터 유형을 사용한다.

 

 

LOB의 종류

- CLOB : 문자 대형 객체(Character) Oracle Server는 CLOB와 VARCHAR2 사이에 암시적 변환을 수행한다.

- BLOB : 이진 대형 객체(Binary) 이미지, 동영상, MP3 등

- BFILE : OS에 저장되는 이진 파일의 이름과 위치가 저장된다. 읽기전용 모드로만 액세스 가능하다.

- NCLOB : 내셔널 문자 대형 객체(National) 오라클에서 정의되는 National Character Set을 따르는 문자이다.

 

 

데이터베이스의 내부/외부 저장위치

- CLOB, BLOB, NCLOB 은 내부 : Table에 LOB형식의 컬럼을 생성하고 이곳에 데이터의 실제 위치를 가리키는 Locator(위치자)를 저장한다.

- BFILE 은 외부에 저장한다.

 

 

LOB 구성

- LOB 값 : 저장될 실제 객체를 구성하는 데이터

- LOB 위치자 : 데이터베이스에 저장된 LOB값의 위치에 대한 포인터

- LOB열에는 데이터가 없고 LOB 위치자만 들어있다.

 


Oracle에서 CLOB 조회(쿼리)하는 방법

 

# CLOB컬럼의 전체길이 반환

DBMS_LOB.GETLENGTH(CLOB컬럼명)

# CLOB컬럼의 값 조회

DBMS_LOB.SUBSTR(CLOB컬럼명, 가져올 길이, 오프셋)

 

[ORA-06502, ORA-06512 오류 발생 시 조치 방법]

지정된 Buffer 크기보다 더 큰 데이터를 읽을 때 발생한다.

SUBSTR함수의 Offset를 이용하여 여러 번 호출하여 해결 가능하다.

 


오라클 myBatis.oracle.sql.CLOB@ 에러

게시글을 가져오는 상황이었으며 데이터타입은 CLOB타입이었다.

 

/*
    # CLOB 형 데이타 SELECT   
    DBMS_LOB.SUBSTR(
     CLOB 타입 컬럼 명
    , 추출할 문자열 길이(숫자) OR 전체 문자길이( DBMS_LOB.GETLENGTH(CONTENTS) )
    , 전체 값 출력 : 1
    )   
    전체 문자길이( DBMS_LOB.GETLENGTH(CONTENTS) ) 사용시 아래와 같은 메세지 발생할 수 있음. 
    -- ORA-06502: PL/SQL: 수치 또는 값 오류: 문자열 버퍼가 너무 작습니다   

   ==>  DBMS_LOB.GETLENGTH(CONTENTS)의 길이가 4000이상인 경우 발생하는 듯함. 원인은 아래 내용 참조

*/

CLOB일 경우, Byte가 아니라 문자 갯수가 4000자로 잘려진다고 한다.

즉, 문자셋이 한글이나 UTF-8 등으로 되어 있을 경우, 4000자를 가져오면 4000 Byte를 넘기 때문에,

VARCHAR2 에 저장할 수 있는 한계에 걸려, 해당 오류가 발생한다.

 

또한, DBMS_LOB.SUBSTR(...) 함수의 리턴 값이 VARCHAR2로 지정되어 있어서,

이 함수를 SQL 문장에서 직접 사용할 경우, 함수가 리턴될 때 바로 4000Byte 제한이 걸리게 된다.

 

'ALL' 카테고리의 다른 글

API 란?  (0) 2023.01.02
2022 회고록  (0) 2023.01.01
[React] useState 간단예제 카운터  (0) 2022.12.29
modal 열기, 닫기, 닫기 이벤트처리 및 해제  (0) 2022.12.13
선언형 코드/ 명령형 코드  (0) 2022.09.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함