개발/SQL
Oracle 데이터 타입 - 이진데이터
함수형 인간
2025. 2. 21. 03:39
1. RAW
- 특징:
- 최대 2000바이트까지의 이진 정보를 저장.
- 인덱스 처리가 가능.
- 16진수와 2진수 형태로 저장.
- 오라클과 다른 시스템 간에 데이터를 이동할 때 오라클에서 명시적으로 변환하지 않는 데이터를 저장할 수 있다. 예를 들어 그래픽, 사운드, 이진 데이터 배열 등을 저장할 수 있다.
- 사용 형식:
- 컬럼명 RAW(크기);
- 사용 예시:
SQL
CREATE TABLE TEMP09(
COL1 RAW(2000)
);
INSERT INTO TEMP09 VALUES('1100001111110001');
INSERT INTO TEMP09 VALUES('C3F1');
SELECT * FROM TEMP09;
1 2. LONG RAW
- 특징:
- RAW 타입과 유사하지만, 더 큰 용량의 이진 데이터를 저장할 수 있다.
- 최대 2GB까지의 이진 데이터를 저장할 수 있다.
- 테이블당 하나의 LONG RAW 컬럼만 허용.
- 일부 SQL 함수 및 기능에서 지원되지 않는다.
- 제약 사항이 많아 최근에는 BLOB 타입을 사용하는 것이 권장됨.
- 사용 형식:
- 컬럼명 LONG RAW;
3. BFILE
- 특징:
- 4GB까지의 이진 자료를 저장.
- 원본 자료는 데이터베이스 외부에 저장하고, 데이터베이스에는 경로와 파일명만 저장.
- 원본 데이터가 자주 변경되는 경우 효율적인 자료 타입.
- 데이터베이스 외부의 파일을 참조하므로, 파일 시스템의 보안 및 접근 권한을 고려해야 함.
- 운영 체제의 파일 접근 권한을 적절하게 설정해야 한다.
- 데이터베이스 사용자가 외부 파일 시스템에 접근할 수 있는 권한을 제한해야 한다.
- 사용 형식:
- 컬럼명 BFILE;
- 사용 예시:
SQL
-- 1. 자료 및 테이블 준비
CREATE TABLE TEMP10(
COL1 BFILE
);
-- 2. 디렉토리 객체 생성
CREATE DIRECTORY TEST_DIR AS 'D:\1.Oracle\util';
-- 3. 데이터 삽입
INSERT INTO TEMP10 VALUES(BFILENAME('TEST_DIR','Cat03.jpg'));
SELECT * FROM TEMP10;
4. BLOB (Binary Large Object)
- 특징:
- 4GB까지의 이진 자료를 저장.
- 원본 데이터를 데이터베이스 내부에 저장.
- 처리 속도가 빠르지만, 변경이 많은 자료의 저장에는 부적절.
- 대용량 데이터를 저장하므로, 성능 최적화를 위한 몇 가지 고려 사항이 있다.
- CHUNK 옵션을 사용하여 데이터를 분할 저장하고, 필요에 따라 부분적으로 읽어올 수 있다.
- LOB 인덱스를 사용하여 BLOB 데이터에 대한 검색 성능을 향상시킬 수 있다.
- BLOB데이터를 다룰때에는 DBMS_LOB 패키지를 이용하여, 데이터를 다루어야 한다.
- 사용 형식:
- 컬럼명 BLOB;
- 자료 저장 순서 및 예시:
SQL
-- 1. 테이블 생성
CREATE TABLE TEMP11(
COL1 BLOB
);
-- 2. 디렉토리 객체 생성 (TEST_DIR 사용)
-- 3. 자료 삽입 (익명 블록 또는 프로시저로 구현)
DECLARE
L_DIR VARCHAR2(20) := 'TEST_DIR';
L_FILE VARCHAR2(30) := 'Cat03.jpg';
L_BFILE BFILE;
L_BLOB BLOB;
BEGIN
INSERT INTO TEMP11(COL1) VALUES(EMPTY_BLOB())
RETURN COL1 INTO L_BLOB;
L_BFILE:=BFILENAME(L_DIR, L_FILE);
DBMS_LOB.FILEOPEN(L_BFILE, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(L_BLOB, L_BFILE, DBMS_LOB.GETLENGTH(L_BFILE));
DBMS_LOB.FILECLOSE(L_BFILE);
END;
COMMIT;
SELECT * FROM TEMP11;
주요 차이점 요약
- RAW: 비교적 작은 이진 데이터 저장, 인덱싱 가능.
- LONG RAW: 예전방식의 대용량 이진 데이터, 제약 사항 많음.
- BLOB: 대용량 이진 데이터, 데이터베이스 내부 저장, 빠른 처리 속도.
- BFILE: 대용량 이진 데이터, 외부 파일 참조, 자주 변경되는 데이터.