제21장 DBMS_REPAIR

내용 목차

21.1. 개요
21.2. 함수
21.2.1. ONLINE_INDEX_CLEAN

본 장에서는 DBMS_REPAIR 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명한다.

21.1. 개요

DBMS_REPAIR는 테이블과 인덱스 내의 깨진 블록을 검사하고 복구하는 기능을 제공하는 패키지이다.

다음은 DBMS_REPAIR 패키지 내에 정의된 상수이다.

  • ALL_INDEX_ID

    인덱스의 스키마 객체 ID를 지정할 때 사용하며, 모든 인덱스에 대해 클린업을 수행하도록 지정한다.

    ALL_INDEX_ID CONSTANT BINARY_INTEGER := 0
  • LOCK_NOWAIT

    관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 NOWAIT 모드로 요청한다.

    LOCK_NOWAIT CONSTANT BOOLEAN := true
  • LOCK_WAIT

    관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 WAIT 모드로 요청한다.

    LOCK_NOWAIT CONSTANT BOOLEAN := false

21.2. 함수

본 절에서는 DBMS_REPAIR 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

21.2.1. ONLINE_INDEX_CLEAN

실패하거나 중단된 인덱스 online-build 또는 online-rebuild에 대한 클린업을 수행한다.

ONLINE_INDEX_CLEAN 함수의 세부 내용은 다음과 같다.

  • 프로토타입

    DBMS_REPAIR.ONLINE_INDEX_CLEAN
    (
        object_id       IN  BINARY_INTEGER  DEFAULT ALL_INDEX_ID,
        wait_for_lock   IN  BOOLEAN         DEFAULT LOCK_WAIT
    )  
    RETURN BOOLEAN;
  • 파라미터

    파라미터설명
    object_id

    클린업을 수행할 인덱스의 스키마 객체 ID이다.

    ALL_INDEX_ID 상수로 지정할 경우 모든 인덱스에 대해 클린업을 수행한다.

    wait_for_lock

    인덱스와 관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 요청할 때의 LOCK 모드이다.

    • LOCK_NOWAIT 상수로 설정할 경우 LOCK을 얻는 데 실패하면 클린업이 바로 중단된다.

    • LOCK_WAIT 상수로 설정할 경우 LOCK을 얻을 때까지 계속 기다린다.

  • 반환값

    반환값설명
    TRUE지정된 모든 인덱스에 대해 클린업이 수행된 경우에 반환된다.
    FALSE지정된 인덱스 중 하나 이상의 인덱스에 대한 클린업이 실패한 경우에 반환된다.
  • 예제

    DECLARE
        cleaned BOOLEAN;
    BEGIN
        cleaned := false;
        WHILE cleaned = false
        LOOP
            cleaned := DBMS_REPAIR.ONLINE_INDEX_CLEAN(DBMS_REPAIR.ALL_INDEX_ID,
                                                   DBMS_REPAIR.LOCK_WAIT);
            DBMS_LOCK.SLEEP(10);
        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
        RAISE;
    END;
    /
    
    PSM completed
    SQL>