본 장에서는 DBMS_REPAIR 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명한다.
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
본 절에서는 DBMS_REPAIR 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.
실패하거나 중단된 인덱스 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 모드이다.
|
반환값
반환값 | 설명 |
---|---|
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>