ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 DB 테이블스페이스 용량 늘리기
    개발/Database 2018. 8. 2. 16:21

    휴가철을 맞아 팔자에도 없는 DBA 노릇을 갑자기 하느라 쩜 마니 당황했다ㅎ.....

    한번 해보면 별거 아닌데 한번도 안 해봐서 진짜 쌩난리를 치면서 했다. 담부터는 그러지 말자ㅠ




    1. 테이블스페이스의 이름 확인


      SELECT TABLESPACE_NAME, DATAFILE_COUNT, BLOCK_SIZE

       FROM DBA_TABLESPACES

      ;



    2. 데이터 파일의 이름 확인

      1에서 확인한 테이블스페이스의 이름을 가지고 아래 쿼리를 실행

       FILE_NAME 컬럼의 값이 바로 데이터 파일의 이름임


      SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, STATUS

       FROM DBA_DATA_FILES

     WHERE TABLESPACE_NAME = '<테이블스페이스 이름>'

     ;



    3. 테이블스페이스의 용량을 늘려주기 

     -> 무려 3가지 옵션이 있다! 

         2에서 얻은 데이터 파일 네임을 쓰면 ㅇㅋ


    3-1. 데이터 파일의 크기를 바꿔줌


     ALTER DATABASE DATAFILE '<데이터 파일 이름>' RESIZE <원하는 크기>;



    3-2. 데이터 파일의 크기가 자동으로 늘어나도록 옵션 걸어줌


    --데이터 파일에 선언한 사이즈를 추가

     ALTER DATABASE DATAFILE '<데이터 파일 이름>' AUTOEXTEND ON NEXT '<사이즈>'


    --데이터 파일의 사이즈를 선언한 사이즈로 변경

     ALTER DATABASE DATAFILE '<데이터 파일 이름>' AUTOEXTEND ON MAXSIZE '<사이즈>';



    3-3. 데이터 파일을 추가함


     ALTER TABLESAPCE '<테이블스페이스명>' ADD DATAFILE '<데이터 파일 이름>' SIZE '<사이즈>';




    * 참고 : 테이블스페이스의 총 용량, 사용 중인 용량 및 남은 용량 확인 쿼리


     SELECT  A.TABLESPACE_NAME, A.FILE_ID,

        ROUND(A.BYTES/1024/1024/1024, 2)||'G' USABLE,

          ROUND( B.BYTES/1024/1024/1024,2)||'G' FREE,

                TRUNC(100-(B.BYTES/A.BYTES*100),2)||'%' USED_RATE,

        TRUNC(B.BYTES/A.BYTES*100,2)||'%' FREE_RATE

      FROM  ( SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES

    FROM DBA_DATA_FILES

          GROUP BY TABLESPACE_NAME, FILE_ID ) A,

         ( SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES

    FROM DBA_FREE_SPACE

          GROUP BY TABLESPACE_NAME, FILE_ID ) B

     WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME

        AND A.FILE_ID = B.FILE_ID(+)

    ORDER BY USED_RATE DESC;  





    댓글

Designed by Tistory.