LOB이라는 데이터 타입이 있고, 크기가 큰 데이터를 저장할 때 사용합니다.
Binary LOB (BLOB)과 Charactor LOB(CLOB) NCLOB 등이 있습니다.
이 데이터타입 관련하여 사용할수있는 오라클 패키지를 정리하도록 하겠습니다.
사용하기 위하여는 아래 권한이 필요합니다.
grant execute on SYS.DBMS_LOB to [유저명];
사용방법
select DBMS_LOB.[패키지 바디명](lob컬럼) from 테이블;
패키지바디를 정리하도록 하겠습니다.
다양하게 있지만 주로 쓰는거같은 것을 정리하도록 하겠습니다.
APPEND
두개의 lob의 내용을 합칠 수 있습니다.
예제
create table t1 (a int, c clob);
insert into t1(a,c) values(1, 'abcde');
1 row inserted.
commit;
declare
c1 clob;
c2 clob;
begin
c1 := 'abc';
select c into c2 from t1 where a = 1;
dbms_output.put_line('c1 before append is ' || c1);
dbms_output.put_line('c2 before append is ' || c2);
dbms_lob.append(c1, c2);
dbms_output.put_line('c1 after append is ' || c1);
dbms_output.put_line('c2 after append is ' || c2);
insert into t1 values (2, c1);
end;
c1 before append is abc
c2 before append is abcde
c1 after append is abcabcde
c2 after append is abcde
PL/SQL procedure successfully completed.
select * from t1;
< 1, abcde >
< 2, abcabcde >
2 rows found.
CLOSE
이전에 열린 LOB 프로시저를 닫습니다.
COMPARE
두개의 LOB을 비교합니다.
사용시 결과로 1(앞의 값이 더 큼),0(두개의 값이 동일),-1(뒤의 값이 더 큼) 3가지 값이 나옵니다.
예
select dbms_lob.compart(to_char(rawtohex('THIS IS TEST2')),to_char(rawtohex('THIS IS TEST'))) from dual;
-----------
1
1 rows selected.
CONVERTTOBLOB, CONVERTTOCLOB
소스를 BLOB,CLOB으로 변환해줍니다.
COPY
소스를 복사합니다.
CREATETEMPORARY
임시 BLOB,CLOB,NCLOB을 만듭니다.
ERASE
LOB전체 또는 일부를 삭제합니다.
FREETEMPORARY
CREATETEMPORARY로 만든 임시 LOB을 해제합니다.
GETCHUNKSIZE
lob의 chunksize를 반환합니다.
select dbms_lob.getchunksize(a) from lob_test;
---------------------
8060
GETLENGTH
lob의 길이를 반환합니다.
select dbms_lob.getlength(a) from lob_test;
---------------------
351
GETOPTION
특정 LOB의 option_type 필드에 해당하는 압축, 중복 제거 및 암호화 설정을 가져옵니다.
INSTR
LOB에서 패턴의 n번째 발생의 일치 위치를 사용자가 지정한 오프셋에서 시작하여 반환합니다.
a컬럼에서 TITLE
select dbms_lob.instr(a,'TITLE') from lob_test;
---------------------
14
ISOPEN
LOB이 열려있는지 확인합니다. 1이면 OPEN 아니면 0입니다.
select dbms_lob.isopen(a) from lob_test;
---------------------
0
ISREMOTE
LOB이 데이터베이스의 로컬인지 또는 원격 데이터베이스에 속하는지 확인합니다. TRUE면 remote, FALSE면 로컬입니다.
ISSECUREFILE
LOB이 SecureFile LOB용이면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
ISTEMPORARY
LOB이 임시인지 아닌지 확인합니다. 0이면 임시가 아니고 1이면 임시입니다.
LOADBLOBFROMFILE
이 프로시저는 BFILE에서 내부 BLOB로 데이터를 로드합니다. 그러면 LOADFROMFILE과 동일한 결과를 얻을 수 있으며, 새로운 오프셋을 반환합니다.
LOADCLOBFROMFILE
BFILE에서 필요한 문자 집합 변환과 함께 내부 CLOB/NCLOB로 데이터를 로드하고 새 오프셋을 반환합니다.
LOADFROMFILE
(deprecated)소스 외부 LOB(BFILE)의 전부 또는 일부를 대상 내부 LOB에 복사합니다.
MOVE_TO_DBFS_LINK
이 절차는 지정된 LOB 데이터(데이터베이스에서)를 DBFS HSM Store에 보관합니다.
OPEN
indicated mode에서 내부 또는 외부의 LOB를 엽니다
READ
LOB 조각을 읽고 LOB 시작부터 절대 오프셋에서 시작하여 지정된 양을 버퍼 파라미터로 반환합니다.
SET_DBFS_LINK
지정한 SecureFile을 지정한 경로 이름에 연결합니다. 데이터를 경로에 복사하지 않습니다.
SETCONTENTTYPE
LOB의 데이터에 대한 내용 유형 문자열을 설정합니다.
SETOPTIONS
LOB 단위로 압축 및 중복 제거를 활성화/비활성화하여 기본 LOB 열 설정을 재정의합니다.
SUBSTR
LOB의 처음부터 절대 오프셋에서 시작하여 LOB의 양 바이트 또는 문자를 반환합니다.
TRIM
내부 LOB 값을 newlen 파라미터에서 지정한 길이로 트리밍합니다.
WRITE
LOB의 시작부터 절대 오프셋에서 시작하여 지정된 양의 데이터를 내부 LOB에 기록합니다. 데이터는 버퍼 파라미터에서 기록됩니다.
WRITEAPPEND
이 절차는 지정된 양의 데이터를 내부 LOB의 끝에 기록합니다. 데이터는 버퍼 파라미터로부터 기록됩니다
출처 : https://docs.oracle.com/database/timesten-18.1/TTPLP/d_lob.htm#TTPLP66709
'Oracle > 운영' 카테고리의 다른 글
[ASM Process] Onnn 프로세스 (0) | 2024.06.18 |
---|---|
DBMS_LOB.SUBSTR 사용시 ORA-06502 발생원인 (0) | 2024.05.22 |
MView - 12c New features (Realtime MView) (0) | 2024.01.30 |
Materialized View (MView) (0) | 2024.01.26 |
[통계정보 export/import]다른 테이블에 통계정보 복사 (0) | 2023.12.14 |
댓글