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번의 함수 기반 인덱스 내용은 다음 포스팅을 참조해 주세요)
3. 인덱스에 대한 DDL문을 가져와서 메모장에 저장해 둡니다.
오라클 관리툴에서 해당 인덱스 마우스 우클릭 후 수정을 누르면 생성했던 DDL 문인 CREATE INDEX 문을 확인할 수 있습니다.
오렌지를 사용한다면 우클릭 후 Describe(F4)를 클릭하면 CREATE INDEX 문을 볼 수 있습니다.
4. 테이블의 크기를 확인합니다.
(테이블 크기 확인은 다음 포스팅을 참조해주세요.)
5. 테이블 크기 확인 후 크기가 작으면 함수 기반 인덱스를 삭제 후
테이블에서 축소 작업을 수행하고 3번에서 가져온 CREATE INDEX 문을 사용하여 인덱스를 다시 만들어 줍니다.
이상으로 오라클에서 테이블 축소 작업 시 발생하는 ORA-10631 오류의 원인과 해결방법에 대해서 알아보았습니다.
반응형
그리드형
'IT > ORACLE' 카테고리의 다른 글
ORA-02049 시간초과 분산 트랜잭션이 잠금으로 대기중입니다 해결방법 (1) | 2021.04.02 |
---|---|
오라클 쿼리 세션 타임아웃 설정 (0) | 2021.04.02 |
오라클 함수 기반 인덱스 생성 & 조회 (0) | 2021.03.30 |
오라클 테이블 & 인덱스 크기 확인 명령어 (0) | 2021.03.30 |
오라클 print 문자출력(dbms_output.put_line) (0) | 2021.03.29 |
댓글