업무 연속성과 데이터 백업 문의드립니다. 0 2 690

by 우분트 [Oracle 백업/복구] 데이터 백업 [2018.08.05 00:16:11]


안녕하십니까?

고수님들의 고견을 듣고자 문의드립니다. DB에 관심 많은 업무 개발자입니다. 

 

* 테이블 구조는 대략 아래와 같습니다.

1. 테이블 데이터 건수 : 대략 5억건 이상

2. 테이블 형태 : 파티션 테이블 (등록년월) -> 파티션키를 포함한 인덱스는 Non-uniq

3. 인덱스 : 글로벌  Non-prefixed 인덱스 (PK : Uniq)

4. 데이터 관리 : 배치 -> 등록, 온라인 -> 조회 및 변경

 

데이터 백업을 해야 하는 상황에 왔습니다.

그러나, 특이하게 글로벌 PK 인덱스로 구성되어 있어 단순하게 파티션을 분리/백업을 할 수 없는 상태라고 합니다.

2가지 경우를 제시하는 것 같습니다.

1. 업무 임시 중단 -> 해당 파티션 분리 -> Rebuild

2. 백업대상 임시 테이블로 복사 -> 백업대상 삭제 -> 지속적인 데이터영역(HWM) 증가는 되지 않으나, 성능을 위한 Rebuild를 위해 업무 임시 중단 필요

 

개인적으로 많은 고민을 해봤는데 아래 기술한 절차가 업무 연속성을 유지하면서 진행할 수 있는 절차인것인지 궁금합니다.

(단, 업무 중단이 없는 상태에서의 진행을 전제로 합니다. DDL를 통한 순단은 가능)

0. 메인 테이블 백업

1. 백업을 위한 임시 테이블1 생성

2. 전환을 위한 임시 테이블2 생성 (일반 테이블, PK인덱스만 생성)

3. 백업 대상을 임시 테이블1에 적재

4. 트리거 생성 (배치는 통제 가능하므로 update에 대해서만 기술하여 임시테이블2에 NEW 정보 등록)

5. 메인 테이블의 최종 운영을 위한 미변경 데이타를 임시 테이블2에 적재 (NOT EXISTS 임시 테이블2)

6. 건수 확인 및 무결성 검증

7. 임시 테이블의 그 외 인덱스 생성

8. 테이블명 변경 (임시 테이블2 -> 메인 테이블) : 메인 테이블 삭제가 필요하다면 삭제후 진행

9. 임시 테이블1 백업후 Drop

끝.

 

감사합니다.^^

by 우리집아찌 [2018.08.06 09:24:54]

백업이 아니라 년단위로 파티션 삭제/추가 작업아닌가요?

분리/백업이 불가능한게 아니라 파티션을 삭제하면  글로벌 비파티션 인덱스가 깨집니다.. 

5억건이면 난리 나겠죠 ㅎㅎ

일단 switching 하시는게 맞습니다. 트리거를 하던 뭘하던 다른 테이블에 옮기신후 rename하시면 됩니다.

다만 인덱스가 추가로 있거나 하면 인덱스명도 rename 하셔야합니다.

 


by 우분트 [2018.08.18 12:24:48]

파티션 분리하여 백업하는게 목적인데..

온라인으로 운영되는 테이블이라...많은 고민이 되었습니다.

더 더욱 글로벌 인덱스라서..ㅠ

쉽지 않은 일이지만 많은 테스트를 통해 진행하려 합니다.

 

암튼 고견 감사합니다. 즐거운 주말 되세요~

 

 

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