Oracle에서 모든 테이블 인덱스 사용 안 함 및 나중에 사용 안 함
Oracle에서 지정된 스키마/데이터베이스의 모든 인덱스를 비활성화하고 나중에 활성화하려면 어떻게 해야 합니까?
참고: 이는 sqlldr을 더 빠르게 실행하기 위한 것입니다.
다음은 파일 없이 인덱스를 사용할 수 없도록 만드는 것입니다.
DECLARE
CURSOR usr_idxs IS select * from user_indexes;
cur_idx usr_idxs% ROWTYPE;
v_sql VARCHAR2(1024);
BEGIN
OPEN usr_idxs;
LOOP
FETCH usr_idxs INTO cur_idx;
EXIT WHEN NOT usr_idxs%FOUND;
v_sql:= 'ALTER INDEX ' || cur_idx.index_name || ' UNUSABLE';
EXECUTE IMMEDIATE v_sql;
END LOOP;
CLOSE usr_idxs;
END;
재구축도 이와 유사합니다.
3개의 답변을 함께 결합: (선택 문은 DDL을 실행하지 않기 때문에)
set pagesize 0
alter session set skip_unusable_indexes = true;
spool c:\temp\disable_indexes.sql
select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
spool off
@c:\temp\disable_indexes.sql
가져오기...
select 'alter index ' || u.index_name ||
' rebuild online;' from user_indexes u;
이는 가져오기가 동일한 (sqlplus) 세션에서 발생한다고 가정합니다.
"imp"를 호출하는 경우 별도의 세션에서 실행되므로 "ALTER SESSION" 대신 "ALTER SYSTEM"을 사용해야 합니다(그리고 매개 변수를 찾은 방식으로 다시 배치해야 합니다).
출처: http://forums.oracle.com/forums/thread.jspa?messageID=2354075
alter session set skip_unusable_indexes = true;
alter index your_index unusable;
가져오기 수행...
alter index your_index rebuild [online];
Oracle에서 제약 조건을 비활성화할 수 있지만 인덱스는 비활성화할 수 없습니다.인덱스를 사용할 수 없도록 설정하는 명령이 있지만 인덱스를 다시 작성해야 하므로 인덱스를 삭제하고 다시 작성하는 스크립트를 작성해야 합니다.user_indexes 및 user_ind_columns를 사용하여 스키마의 모든 인덱스를 가져오거나 dbms_metadata를 사용할 수 있습니다.
select dbms_metadata.get_ddl('INDEX', u.index_name) from user_indexes u;
병렬이 아닌 직접 경로 로드를 사용하는 경우 특히 인덱스가 소수의 열만 포함하는 경우 인덱스를 전혀 삭제하지 않는 것을 고려하고 벤치마크합니다.Oracle에는 직접 경로 로드에서 인덱스를 효율적으로 유지 관리할 수 있는 메커니즘이 있습니다.
그렇지 않으면 인덱스를 삭제하는 대신 사용할 수 없게 만드는 것이 좋습니다.실수로 인덱스를 다시 만들지 않을 가능성이 줄어듭니다.
Oracle 11g에 있는 경우 dbms_index_utl도 체크아웃할 수 있습니다.
두 가지 답변을 결합합니다.
먼저 모든 인덱스를 사용할 수 없도록 sql을 만듭니다.
alter session set skip_unusable_indexes = true;
select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
가져오기...
select 'alter index ' || u.index_name || ' rebuild online;' from user_indexes u;
sqlldr의 SKIP_INDEX_MAINTENSION 매개 변수를 사용해 보십시오.
언급URL : https://stackoverflow.com/questions/129046/disable-and-later-enable-all-table-indexes-in-oracle
'sourcetip' 카테고리의 다른 글
Firebase 서비스 작업자와 Vue/Vuex 웹 애플리케이션 간의 통신 방법 (0) | 2023.06.12 |
---|---|
VS 코드 인텔리센스가 매우 느림 (0) | 2023.06.12 |
안드로이드에서 소프트웨어 키보드의 가시성을 확인하는 방법은 무엇입니까? (0) | 2023.06.12 |
런타임에 web.config appSettings를 어떻게 수정합니까? (0) | 2023.06.12 |
시간 델타를 년으로 변환하시겠습니까? (0) | 2023.06.12 |