2012-07-04 5 views

답변

6
create or replace procedure rebuild_indexes(
    p_owner in varchar2, 
    p_table_name in varchar2 
) as 
begin 
    for indexes_to_rebuild in 
    (
     select index_name 
     from all_indexes 
     where owner = p_owner 
      and table_name = p_table_name 
    ) loop 
     execute immediate 'alter index '||p_owner||'.' 
      ||indexes_to_rebuild.index_name||' rebuild'; 
    end loop; 
end; 
/

그러나 이것은 가장 간단한 인덱스에서만 작동합니다. 재건축시 많은 restrictions이 있습니다. 예를 들어, 인덱스가 파티션 된 경우 각 파티션이나 서브 파티션을 다시 빌드해야합니다.

그리고 고려해야 할 많은 옵션이 있습니다. 예를 들어 재구성 중에 다른 사용자가 색인을 사용하도록하려면 PARALLEL 옵션을 추가하여 빠르게 재구성하십시오 (그러나 이로 인해 색인의 병렬 설정이 변경되어 문제가 발생할 수 있음).

많은 오라클 전문가들은 인덱스 재 구축이 일반적으로 시간 낭비라고 생각합니다.

+0

p_owner 란 무엇입니까? – Mercer

+0

@Mercer :이 절차를 여러 사용자에게 사용하려는 경우 인덱스 스키마를 지정합니다. –

관련 문제