Database/Oracle

[Oracle] 테이블 스페이스(Table Space) 변경

Ma_Sand 2024. 9. 2. 21:08
반응형

솔루션 릴리즈 파일을 설치 및 테스트를 위해 오라클에서 데이터베이스와 계정을 새로 생성했다.

해당 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;

 

테이블 스페이스 변경하니 테스트 중에 이와 관련한 문제는 발생하지 않았다.

 

반응형