반응형

입력되는 테이블을 NoLogging 상태로 만들기

alter table  TFEI_TEMP_SND_RCV_FILE nologging;

append 힌트 사용하기

대용량 데이타를 insert 할 경우는 시간이 매우 많이 걸리게 된다.

 그러다가 temp 사이즈나 데이타 오류로 인해 에러가 나더라도

바로 에러를 밷는것이 아니라 롤백을 모두 한후에야

에러를 나타낸다.
 

총 insert 하는 데 걸리는 시간이 3시간이라면

2시간 진행된 작업이 잘못 됐다는걸 알았다(또는 에러가 났다는걸 알았다)

 

그러면 바로 에러를 뱉어내는 것이 아니라 롤백을 2시간 해주어야 된다

즉..  잘못된 insert 작업을 2시간 하다가 취소하면 2시간 기다려야(롤백하느라) 된다는 것이다..


 

얼마나 짜증나는 일인가???
 

해답이 있다 APPEND 를 쓰면 된다.

 

insert /*+append*/ into aaa

select * from ......



 

append 힌트는 롤백을 쌓지않고 바로 테이블스페이스에 저장하게 된다.

취소할 경우에는 그동안 저장된 데이타만 날리기때문에 취소도 즉시 된다.

 

정말 빠르다~~


 

하지만 단점이 있으니....


 

롤백을 쌓는 insert 의 경우에는 얼마나 작업이 진행됐는지 롤백 세그먼트 크기를

보면서 모니터를 할 수 있다.


 

하지만 append 는 롤백을 쌓지 않기 때문에 얼마나 진행됐는지 확인하기가 쉽지 않다.


 

한가지 힌트가 있다면

insert 되는

테이블의 크기라 1024M 이고 익스텐트를 128M이라면

insert 되는 데이타가 1024M의 용량을 넘었다면 익스텐트를 일으키기 때문에

extend 를 하는지 안하는지를 보면 작업이 어느정도 진행되는지 알수 있다.

 

출처 : 일부 나... 그외

http://shinyoung.kr/514

또한 프로세스 개수가 넉넉하다면 PARALLEL 옵션을 주면 더욱 좋다 ㅋ

반응형

+ Recent posts