10g에서 Update 쿼리문 사용 시 40MB 크기의 Archive Log 파일이 Update문 1회 Loop 시 마다 하나씩 생성되는 문제 0 3 3,510

by NExT맨 [2013.01.02 18:55:36]


안녕하세요.

오라클 10g에서 UPDATE 문을 실행하면 쿼리가 한번 실행될 때 마다 4MB 크기의 Archive Log 파일이 생성되는

문제를 겪고 있습니다.

Update하는 데이터는 대략 500 ~ 700만건 가량 되는데 해당 log 파일로 인해 DB Space가 Full이 되고 실행 속도 또한

매우 더뎌져 Log파일을 수동으로 지워가면서 작업하여 15만건 처리하는데도 5시간이나 걸렸습니다.

각종 사이트를 떠돌아다니며 확인한 결과 Log파일을 덜 남기거나 아예 안 남기는 방법으로 3가지가 있다고 하였습니다.


---------------------------------------------------------------------------------------------
첫 번째는 noarchiving 모드로 설정하는 방법

두 번째는 nologging 으로 해당 테이블을 다시 세팅하는 방법

세 번째는 전역 임시 테이블을 생성하는 방법
---------------------------------------------------------------------------------------------

이렇게 있는데 세 번째는 시도한 결과 데이터 마이그레이션하는 과정에서 역시 어마어마한 시간이 소요되는 관계로
 Cancel 되었습니다.

결국 남은 것이 첫 번째와 두 번째 방법인데 두 가지 방법은 운영 서버에서 진행 시 심각한 문제가 발생될 소지가 있는지

와 작업 효율이 크게 상승하는지에 대해서 여쭙고자 합니다.

고수님들의 소중한 의견 부탁 드립니다. ~~
by 손님 [2013.01.03 10:36:50]

500~700만건이면 데이터 양만 해도 .. 컬럼갯수나 컬럼 크기랑 컬럼마다 들어가있는 데이터의
길이에 따라 천차 만별이겠네요...

만일 복구의 필요성이 전혀 없다면 노 아카이브로 하세요. .

노 로깅 모드라고 해도 어차피 아카이브 파일 생성 됩니다. 단지 양만 줄을뿐..

노 아카이브 노 로깅 둘다 다 사용하는게 가장 빠르긴 하겠네요.

제생각으론.

어차피 아카이브 로그라는게  시간이 지남에 따라 db의 변경된 기록을 쌓아 두는것이라

롤백의 가능성이나 어느 시점으로의  복구 필요성이 없다면 .. 노 아카이브 모드로 하시길.

테이블 통째로 백업받아 놓고 .

노아카이브 노 로깅 해서 그냥 업뎃 하시는게 . 그나마 젤 나을듯.

by 손님 [2013.01.03 10:41:43]
 노 아카이브에서는 노로깅이 의미가 없다고 하네요.

by NExT맨 [2013.01.03 11:22:07]
오늘 확인해봤는데 제가 프로시저에서 PL/SQL로 실행했었는데 일반 쿼리문으로 업데이트하니까
아카이브 파일이 생성되지 않고 있네요.

'손님'이 알려주신 노 아카이브 모드 같은 경우 IDC에서 오라클 정책을 변경해야 하는건이라
바꿀 수 없다고 하네요. ㅜㅜ

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