본문 바로가기
IT/ORACLE

ORA-10631 shrink clause should not be specified for this object

by 베베야 2021. 3. 30.
728x90

오늘은 오라클에서 테이블 축소 작업 시 발생하는 ORA-10631 오류의 원인과 해결방법에 대해서 알아보겠습니다.

 

ORA-10631 발생 원인

데이터베이스의 테이블에 세그먼트 쉬링크(Segment Shrink) 작업을 진행하는 도중에 발생했습니다.

ALTER TABLE 유저명.테이블명 SHRINK SPACE CASCADE;

ERROR at line 1:
ORA-10631: SHRINK clause should not be specified for this object

 

원인은 해당 테이블에 생성된 인덱스 중에 함수 기반의 인덱스가 포함되어 있기 때문입니다.

 

 

ORA-10631 해결 방법

1. 로그축소를 하기 위한 테이블에서 함수 기반 인덱스를 찾습니다. 


2. 테이블에서 함수 기반 인덱스를 찾은 후 인덱스에서 사용된 열 식을 찾습니다. 
(1~2번의 함수 기반 인덱스 내용은 다음 포스팅을 참조해 주세요)

 

오라클 함수 기반 인덱스 생성 & 조회

오늘은 오라클에서 사용하는 함수기반 인덱스 생성방법과 테이블에서 함수기반 인덱스를 찾는 방법에 대해서 알아보겠습니다. 함수기반 인덱스란? 테이블의 컬럼들을 값을 가공해서 

bebeya.tistory.com


3. 인덱스에 대한 DDL문을 가져와서 메모장에 저장해 둡니다.
오라클 관리툴에서 해당 인덱스 마우스 우클릭 후 수정을 누르면 생성했던 DDL 문인 CREATE INDEX 문을 확인할 수 있습니다.
오렌지를 사용한다면 우클릭 후 Describe(F4)를 클릭하면 CREATE INDEX 문을 볼 수 있습니다.

 


4. 테이블의 크기를 확인합니다.
(테이블 크기 확인은 다음 포스팅을 참조해주세요.)

 

오라클 테이블 & 인덱스 크기 확인 명령어

데이터베이스의 테이블과 인덱스의 용량 확인이 필요한 경우가 있습니다. 오늘은 오라클에서 테이블의 용량과 인덱스의 크기를 유저 스키마 별로 확인하는 방법에 대해서 알아보겠습

bebeya.tistory.com


5. 테이블 크기 확인 후 크기가 작으면 함수 기반 인덱스를 삭제 후
   테이블에서 축소 작업을 수행하고 3번에서 가져온 CREATE INDEX 문을 사용하여 인덱스를 다시 만들어 줍니다.

이상으로 오라클에서 테이블 축소 작업 시 발생하는 ORA-10631 오류의 원인과 해결방법에 대해서 알아보았습니다.

 

 

 

반응형
그리드형

댓글