2011. 8. 10. 09:53




출 처 : http://blog.naver.com/seaox?Redirect=Log&logNo=40026271431



대량의 데이터 Insert시 롤백세그멘트에 로그를 안 남길려면...
작성자
새내기
작성일
2005-01-13 10:51:30
조회수
1,350

현재 데이터 이전작업을 하고 있는데요. 방법은 DBLINK를 걸어서 하고 있습니다.

ALTER TABLE TEST NOLOGGING 옵션을 사용했구여. 그런데

롤백세그먼트가(UNDOTBS) 계속 증가하더라구여.

이전될 데이터는 30G정도 되는데 롤백세그먼트에 기록하지 않고 Insert할 방법은 없나여?

 

 

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

/*+ append */  힌트를 사용해서 insert 하시기 바랍니다.

위 힌트는 direct load 를 지원하며, 버퍼캐쉬를 직접 거치지

않으므로 rollback 정보를 생산하지 않게 됩니다.

 

수고하세요....

나그네님이 2005-01-13 11:02:17에 작성한 댓글입니다. Edit

답변 감사드립니다.

그런데 /*+ append */  힌트를 쓰면 NOLOGGING 옵션을 사용하지 않아도 되나여?

좋은 하루 되세요...

새내기님이 2005-01-13 11:03:29에 작성한 댓글입니다.
이 댓글은 2005-01-13 11:06:56에 마지막으로 수정되었습니다. Edit

/*+ append */ 와 nologging 을 함께 사용하면....

 

롤백 뿐만 아니라 리두 로그도 생성되지 않습니다. 복구가 중요한 작업이 아니라면 nologging과 함께 쓰실 것을 추천드립니다.

(임시 테이블이나 관리 작업등)

 

참고로 색인이 있다면 색인도 unusable로 꺼두고 하시면 롤백과 리두가 거의 "0"에 가깝게 나옵니다. 색인은 작업 완료 후, sort_area_size 키우시고 parallel nologging으로 생성하시면 되겠죠.

 

 

참고로 parallel 힌트를 줘서 병렬로 돌려도 append와 마찬가지로 direct mode로 집어넣게 됩니다. 따라서 처리할 데이타량이 많고 CPU나 I/O가 받쳐주신다면 parallel 을 활용하시기 바랍니다.

김주현님이 2005-01-13 11:16:06에 작성한 댓글입니다.
이 댓글은 2005-01-13 11:22:25에 마지막으로 수정되었습니다. Edit

이제 명확히 알것 같습니다.

 

김주현님 답변 감사드리구여 좋은 하루되세요..

 

새내기님이 2005-01-13 11:21:28에 작성한 댓글입니다. Edit

기우에서 말씀드리는데 parallel  , nologging 작업 후 원래대로 alter ... noparallell logging 해주시는 것 잊지마세요.

 

그렇지 않으면 인덱스나 테이블의 기본 병렬화 정도가 작업 당시로 맞춰져서.... 해당 인덱스나 테이블을 엑세스하는 실행계획이 병렬로 바뀔 수 있습니다. 이 경우 엄청난 성능 저하와 문제를 경험할 수 있습니다. (실재로 이런 경우 많이 봄)

김주현님이 2005-01-13 11:24:21에 작성한 댓글입니다. Edit

질문이 있어서 그런데요

병렬로 처리 한다게 그럼 프로세서 그만 큼 더 생겨서

Posted by 나른한스누피