2012-01-25 2 views
4

5 년 동안 거대한 데이터 (수백만 개의 레코드, 단지 사례 연구!)가있는 테이블이 있으며, 매년 파티션이 있습니다. 이제 저는 지난 2 년간의 데이터를 보존하고 나머지 3 년간의 데이터를 archive라는 새로운 테이블로 옮기고 싶습니다.테이블에서 파티션을 분리하여 oracle의 다른 파티션에 연결하는 방법은 무엇입니까?

다운 타임이 최소화되고 고성능으로 이상적인 방법은 무엇입니까?

+0

닫기 투표자 : 이것은 데이터 조작에 관한 질문입니다. 대부분의 경우 DBA는 이에 관여하지 않습니다. db 프로그래머는 스스로 그렇게해야합니다. –

+0

@FlorinGhita [dba.se]는 DBA 자료 이상을 처리합니다.) VtC – Sathya

+1

@ Sathya에 대한 정보는 아니지만 이해합니다. 하지만이 질문에 맞는 것 같아요, stackoverflow 여기에. 아마도 dba.stackexchange.com에서는 괜찮은 편이지만, 여기에서도 괜찮습니다. –

답변

4
alter table exchange partition 

입니다. 이 명령은 테이블 세그먼트로 파티션의 세그먼트를 확장합니다. 그것은 단지 약간의 참조 interchages를하기 때문에 그것은 가벼운 속도입니다. AFAIK를 직접 교환 할 수 없으므로 임시 테이블이 필요합니다. 같은

뭔가 :

create table tmp_table(same columns); 
Add partition p_2011 in table ARCH_TABLE; 

ALTER TABLE CURR_TABLE EXCHANGE PARTITION P_2011 WITH TABLE tmp_table; 
ALTER TABLE ARCH_TABLE EXCHANGE PARTITION P_2011 WITH TABLE tmp_table; 

실행하기 전에 코드를 테스트 테스트하십시오.

+0

답장을 보내 주셔서 감사합니다. 대상 테이블 아치가 파티션을 가지고 있어야하는지 알고 싶습니다. – azzaxp

+0

네가 반드시 있어야합니다. 이 예제의 두 번째 줄 (파티션 추가)입니다. 그리고 나는 테이블들이 같은 범위를 가지고 있어야한다고 추천한다. –

+0

대상 테이블에 반드시 파티션이있는 것은 아닙니다. – azzaxp

관련 문제