2011-01-13 2 views
1

그래서 Oracle. ODP.NET을 통해 배열 저장 프로 시저 호출을 사용하여 분할 된 테이블에 레코드를 일괄 적으로로드하는 .NET 프로그램이 있습니다.하지만 여기에도 마찬가지가 아닙니다.Oracle 인덱스 파티션을 삭제할 수 없습니다 - 전체 인덱스를 삭제하고 다시 작성하는 것 외에 다른 대안은 있습니까?

내가 알고 싶은 것은 : 테이블에 파티션 된 인덱스가 있기 때문에 배치로드 속도가 매우 느립니다. 나는 인덱스 파티션을 삭제할 수 없다는 것을 충분히 이해하지만, 전체 인덱스를 삭제하고 다시 작성하지 않아도되므로 실행하는 데 상당한 시간이 걸리기 때문에 분명히 선호합니다. 이게 내 유일한 의지인가?

파티션 자체를 삭제 한 다음 시간을 절약하고 목표를 달성 할 수있는 파티션과 인덱스 파티션을 다시 만드는 간단한 방법이 있습니까?

답변

1

전체 파티션을 한 번에로드합니까? 또는 기존 파티션에 새 행을 추가하는 것입니까? 모든 색인이 테이블과 동등한가?

일반적으로 파티션 된 테이블에 데이터를로드하는 경우 각로드가 데이터를 새 파티션에 넣을 수 있도록 파티션 구성표가 선택됩니다. 이 경우 파티션 교환을 사용하여 데이터를로드 할 수 있습니다. 간단히 말해서, 당신은 그 구조가 실제 테이블을 일치, 당신은 인덱스를 만들 실제 테이블에 인덱스를 일치하는 (인덱싱되지 않은) 준비 테이블로 데이터를로드 한 다음 할

ALTER TABLE partitioned_table 
    EXCHANGE PARTITION new_partition_name 
    WITH TABLE staging_table_name 
    WITHOUT VALIDATION; 
예, 확실히하고있어
+0

한 번에 신선한 파티션에 대한로드. 색인도 균등 분할됩니다. 이것은 대단합니다 - 선생님 고마워요! – PatternMatching

관련 문제