반응형
솔루션 릴리즈 파일을 설치 및 테스트를 위해 오라클에서 데이터베이스와 계정을 새로 생성했다.
해당 DB로 설치한 후 테스트를 하는데 계속 테이블 스페이스가 부족하다는 에러가 발생했다.
그래서 현재 세션에서 사용 중인 테이블 스페이스를 조회했다.
SELECT tablespace_name
FROM dba_segments
WHERE owner = USER;
위 쿼리로 조회했더니 테이블 스페이스 용량이 매우 작은 것으로 할당되어 있었다. DB 생성할 때 테이블 스페이스를 용량 큰 걸로 지정해놓은 줄 알았는데 제대로 설정되지 않았다.
테이블과 인덱스의 테이블 스페이스를 변경하는 쿼리는 다음과 같다.
- 테이블의 table space 변경 쿼리
ALTER TABLE 테이블명 MOVE TABLESPACE USERS;
- 인덱스의 table space 변경 쿼리
ALTER INDEX 인덱스명 REBUILD TABLESPACE USERS;
테이블 스페이스를 변경하려고 보니 테이블과 인덱스 개수가 매우 많아서, 다음 프로시저를 통해 접속 중인 데이터베이스의 모든 테이블과 인덱스의 테이블 스페이스를 변경하였다.
- 모든 테이블과 인덱스의 table space 변경 쿼리
BEGIN
FOR t IN (SELECT table_name FROM user_tables WHERE tablespace_name = '기존 테이블스페이스명') LOOP
EXECUTE IMMEDIATE 'ALTER TABLE ' || t.table_name || ' MOVE TABLESPACE 변경 테이블스페이스명';
END LOOP;
END;
테이블 스페이스 변경하니 테스트 중에 이와 관련한 문제는 발생하지 않았다.
반응형