12c delete시 테이블 사용량 반환을 안하네요 원인을 알고 싶습니다. 0 6 3,483

by 김상준 [DB 모델링/설계] 12c delete tablespace assm [2019.02.21 09:58:22]


오라클 12c 사용 유저 입니다. 

질문이 있어서 이렇게 올림니다.

테이블 스페이스는 default로만들어서 ASSM이 되어 있습니다. 


CREATE TABLE GARNET_NP.NMS_P_RAW_T
(
  COLLECT_TYPE  VARCHAR2(128 BYTE)              NOT NULL,
  NODE_IP       VARCHAR2(20 BYTE),
  NODE_NAME     VARCHAR2(256 BYTE)              NOT NULL,
  TIME_STAMP    VARCHAR2(32 BYTE)               NOT NULL,
  TIME_HOUR     VARCHAR2(10 BYTE),
  MIB_INSTANCE  VARCHAR2(128 BYTE)              DEFAULT '0',
  VALUE         VARCHAR2(128 BYTE),
  FILTER_VALUE  VARCHAR2(512 BYTE)              DEFAULT '0',
  IFINDEX       VARCHAR2(100 BYTE)              DEFAULT '0'
)
TABLESPACE GARNET_NP_DATA
RESULT_CACHE (MODE DEFAULT)
PCTUSED    0
PCTFREE    5
INITRANS   163
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
            FLASH_CACHE      DEFAULT
            CELL_FLASH_CACHE DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
NOPARALLEL
MONITORING;
 

 

테이블 구조는 위와 같습니다. 

매일 1200만건의 데이터가 입력이 되고,삭제가 이루어 지고 있습니다.

입력은 1분단위 데이터 입력도 있고, 5분단위 데이터 등록도 있습니다.

삭제는 일괄 매일 1200만 삭제 합니다. 

실제 보관 데이터는 약 1.1억 row를 가지고 있습니다. 

 

그리고 트리거로 다른 테이블에 merge into 하는 작업을 수행하는 것이 있습니다. 

 

인덱스는 따로 있는데 테이블 스페이스는 증가 하지 않습니다. 

근데 데이터쪽 테이블 스페이스는 지속적 적으로 증가가 되어 지고 있습니다.

단편화 현상 쿼리문으로 조회를 해봐도 문제가 없이 100으로 나옵니다.

당췌 원인이 뭔지 알수가 없습니다. 

제발 부탁드립니다. 원인을 알고 싶습니다. 

 

 

by 신이만든지기 [2019.02.21 10:45:16]

오라클 구조가 delete로 데이터 삭제시 할당된 디스크 공간이 반환이 안됩니다. 

그래서 공간을 반환하는 방법이 여럿있습니다.

아래 링크를 참조하세요.

https://tocsg.tistory.com/33


by 마농 [2019.02.21 10:56:50]

혹시 입력이 APPEND 형태로 되고 있지는 않나요?


by 김상준 [2019.02.21 11:20:32]

sqlldr을 사용하여 입력 하는 것도 있고 단순 insert 로 등록되는 부분도 있습니다. 


by 김상준 [2019.02.21 11:21:36]

오라클 파티션을 사용하면 좋은데 스탠다드라 ㅠ_ㅠ;;;; 


by 마농 [2019.02.21 12:23:55]

단순 입력이라면 삭제된 공간이 재사용되니 지속적으로 증가되지는 않을 것입니다.
direct path 형태의 입력이 되고 있지 않은지 의심이 되네요.


by 김상준 [2019.02.21 13:07:26]

sqlldr은 아래와 같은 방식으로 넣습니다. 

 

LOAD DATA
APPEND
INTO TABLE NMS_P_RAW_T
FIELDS
TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES 
(컬럼1,컬럼2,컬럼3)

 

insert문은 그냥 단순 INSERT INTO 문입니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입