반응형
/******************************************************************************************************
-- Title : [ORA11g] Delete Large Data with NOLOGGING
-- Reference : [출처] 대랑 Delete 작업시..|작성자 난나
-- Key word : oracle 오라클 nologging logging 로깅 노로깅 direct-path direct path parallel
******************************************************************************************************/

--  Set Environment
alter session enable parallel dml;
alter session set sort_area_size = 1000000;

-- Create Table with NOLOGGING
create table temp_table
 storage(initial 50m)                           -- 충분한 extent 할당으로 동적 exent 할당 예방
tablespace another_disk_ts                 -- 서로 다른 디스크에 저장하여 I/O 분산
nologging                                        -- log양을 최소화시킴
as
select * from the_table
where 1=2;

--  Insert Data
insert /*+ parallel(temp_table, 4) */       -- 병렬 direct path loading 
into temp_table
nologging
select * from the_table
where clause;
 
-- Truncate Table
truncate table the_table
reuse storage   -- 저장공간은 그대로 두고 row만 삭제

-- Insert Data
insert /*+ parallel(the_table, 4) */ 
 
into the_table
 
nologging
 
select * from temp_table; 

-- 기준
    1. delete보다 insert가 춸씬 적은 양의 rollback 및 redolog 양을 발생.
    2. delete보다 truncate가 훨씬 빠름.
    3. parallel direct path 및 nologging을 이용한 속도 향상.
    4. 필요하면 신규 테이블 만들고 필요 데이터만 Insert 후 원본 테이블 삭제.

반응형

+ Recent posts