database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38988 게시물 읽기
No. 38988
blob insert 후 delete 하는데 tablespace의 freespace가 계속 줄어듭니다. 이게 정상인가요?
작성자
허종진(ptculi)
작성일
2011-10-20 12:04ⓒ
2011-10-20 12:08ⓜ
조회수
5,472

blob컬럼을 암호화하여 등록해야 할 일이 있어서 암호화처리하는 프로시져를 만들었습니다.
프로시져의 처리 내용은 이렇습니다.
1. 암호화테이블 1행 insert : INSERT INTO TBL_TMP_BLOB (SEQ_NO, FL_BD) VALUES (V_SEQ_NO, EMPTY_BLOB());
2. 암호화테이블 blob컬럼 select : FL_BD into V_ENC_LOB
3. 원본테이블 blob컬럼 select : FL_BD into V_SRC_LOB
4. 암호화 : DBMS_CRYPTO.ENCRYPT(V_ENC_LOB, V_SRC_LOB, DBMS_CRYPTO.AES_CBC_PKCS5, V_KEY);
5. 암호화테이블 blob컬럼을 원본테이블 blob컬럼에 update
6. 암호화테이블 1행 delete

원본테이블의 blob이 insert된 후 위 프로시져를 호출하면 원본테이블의 blob컬럼은 암호화되어 update되고
암호화테이블은 insert 후 delete 되기 때문에 평상시 select 해도 데이터건이 없습니다.
(위 작업이 단일 transaction이므로 당연히 암호화테이블은 데이터가 없을 수 밖에 없습니다.)

이렇게 운영을 하고 있는데 암호화테이블이 사용하는 tablespace의 freespace가 계속 감소하고 있어서
처음 1GB만 할당한 tablespace가 현재는 10GB까지 늘려논 상태입니다.

그리고 암호화테이블을 truncate하면 그때는 freespace가 100%가 됩니다.

평상시 하루 blob량이 대략 1GB이며 마감때는 거의 10G까지 늘어납니다.

우선은 매일 저녁에 truncate를 실행해서 freespace를 100%로 만들고 있긴한데
데이터도 없는 암호화테이블이 tablespace가 계속 차고 있는것도 이상하고
마감때 혹시 tablespace가 full이 나면 프로그램이 에러나는건 아닌지 걱정입니다.

이 상황을 어떻게 해결해야 할까요?
데이터도 없는 테이블의 freespace가 계속 줄어드는게 정상인가요?
(DB버전은 10.2.0.4입니다.)

이 글에 대한 댓글이 총 2건 있습니다.

자답입니다. 오라클에 문의하여 해결했습니다.

테이블스페이스 생성할때
SEGMENT SPACE MANAGEMENT AUTO로 되어 있었는데
SEGMENT SPACE MANAGEMENT MANUAL로 변경하니
한번에 insert되는 용량 만큼만 사용량이 증가하고 그 후에는 증가하지 않습니다.

AUTO로 하면 delete된 space를 재사용하지 않고 새로운 space를 계속 늘리고
(프로그램에서 에러가 안나는것으로 봐선 full이 되면 재사용하는것 같습니다.)
MANUAL로 하면 delete된 space를 재사용하여 이런 결과가 나온것 같습니다.

다른분들도 참고하세요.

허종진(ptculi)님이 2011-10-21 20:18에 작성한 댓글입니다.
이 댓글은 2011-10-21 20:19에 마지막으로 수정되었습니다.

 위의 증상은 버그로 보입니다.

말씀하신 ASSM은 그런 옵션의 의미가 아닙니다.

ASSM을 Manual을 하였을 때 사용못하는 기능이 있으며, (예를 들어 Segement shrink등)

별도로 Freelist로 관리를 해야 하므로 적절히 튜닝못하면 성능 이슈가 나올 수도 있습니다.

ASSM을 Manual로 하는 것은 Bug를 피하기 위해 Workaround로 이야기한 것 같습니다만...

anonymous님이 2011-10-26 20:38에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38994질문 --- 오라클 Select Trigger 가능할까요? [1]
글지기
2011-10-21
3408
38991열을 한 행으로.. [2]
차이
2011-10-21
4756
38990단순(?)휴가일수 구하기...질문드려요 [2]
sql초보
2011-10-20
4113
38988blob insert 후 delete 하는데 tablespace의 freespace가 계속 줄어듭니다. 이게 정상인가요? [2]
허종진
2011-10-20
5472
38986function 에서 into 문 결과 조건 처리 [2]
박재덕
2011-10-19
3966
389851997-07-16T19:20:30+01:00 형식으로 날짜를 넣고 싶습니다. [1]
조동건
2011-10-19
3619
38984v$session과 v$sqlarea의 join key 관련 문의 [1]
초보
2011-10-19
4550
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다