DB 데이터 정리 및 백업(JOB) 질문드려요... 0 3 3,036

by 콩이 [어플리케이션관련] DB JOB 스케쥴러 백업 [2013.01.23 11:20:51]


안녕하세요.. 많은 도움을 구하고 있습니다. 모든 분들께 미리 감사드려요..

제가 이번에 질문 드릴건 역시 DB JOB으로 처리해야 할 문제인거 같습니다...

T_MAIN이란 테이블이 있습니다.
USER_ID VARCHAR(15) //아이디
TITLE VARCHAR(100) //제목
MSG VARCHAR(4000) //내용
SEND_DATE VARCHAR(14) //발송일 yyyyMMddHHmmss 형식

위와 같은 테이블입니다. 그런데 문제는 USER_ID 별로 그러니까 회원별로 SEND_DATE  기준 최근 3개월 데이터를 제외한
나머지 데이터를 삭제하고 특정 테이블(필드 구조가 같은)에 넣고 싶습니다.

핵심은 각 회원별로 SEND_DATE  기준 최근 3개월 이전 데이터를 삭제하고 백업하는것입니다.
(*추가로 각 회원별이 아니라 그냥 최근 3개월 데이터만 존재해도 상관 없지 않을까 생각도 드네요.. 맞나요?)
(*T_MAIN 테이블은 각 회원별 최근 3개월 데이터만 존재하게 하려는 목적입니다.)

어떻게 프로그래밍해야 할지... 그리고 DB JOB이 실행되는 주기는 어떻게 해야 할지 조언을 구해봅니다.

부탁드려요 고수님들..
by 신이만든짝퉁 [2013.01.23 13:48:42]
insert /*+ append */ into t_main_bak
select * from t_main where send_date <= add_months(sysdate, -3);

delete from t_main where send_date <= add_months(sysdate, -3);
commit;

job 주기는 1개월마다 :  'trunc(add_months(sysdate, 1), ''mm'')'

이렇게 하면 될 것 같아요. ^^


by 신이만든짝퉁 [2013.01.23 13:55:49]
 가능한 최신데이터를 유지하고 싶으면 job  주기를 짧게 하면 됩니다.

예컨데 하루로 하고 싶다면 trunc(sysdate+1)

by 콩이 [2013.01.23 14:43:00]
정말 감사합니다. 한번 실습해보겠습니다. 해보고 이상 있으면 고민해보고 글 올려보겠습니다. 고수님.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입