• 현재 사용률 조회

    select df.tablespace_name “Tablespace”,


    round(df.TBS_byte /1048576,2) “Total(MB)”,


    round((df.TBS_byte – fs.Free_byte)/1048576,2) “Used(MB)”,


    round(fs.Free_byte /1048576,2) “Free(MB)”,


    round((fs.Free_byte/df.TBS_byte) *100,0) “Free(%)”,


    fs.pieces “Pieces”,


    round(fs.Max_free /1048576,2) “MaxFree(MB)”,


    db.EXTENT_MANAGEMENT


    from ( select tablespace_name, sum(bytes) TBS_byte


    from dba_data_files group by tablespace_name ) df,


    ( select tablespace_name, max(bytes) Max_free, sum(bytes) Free_byte, count(*) pieces


    from dba_free_space group by tablespace_name ) fs,


    ( select tablespace_name, initial_extent, next_extent,EXTENT_MANAGEMENT


    from dba_tablespaces ) db


    where df.tablespace_name = db.tablespace_name


    and df.tablespace_name = fs.tablespace_name(+)


    order by 5


    /



       



  • 현재 데이터파일 정보 조회(제 경우 TEST1 테이블 스페이스가 test01.dbf ~ test04.dbf로 이루어져 있습니다)

    set lines 300


    set pages 1000


    col file_name for a50


    col tablespace_name for a20


    select FILE_ID,


    FILE_NAME,


    TABLESPACE_NAME,


    AUTOEXTENSIBLE,


    INCREMENT_BY,


    BYTES/1024/1024 “current(M)”,


    MAXBYTES/1024/1024 “maxExtend(M)”


    from dba_data_files


    order by 3,4 desc


    /



       



  • 테스트를 위해 각 데이터파일 리사이즈(사이즈 증가)


       



       



  • 데이터파일 별 블록 사용률 조회

    select block_id, blocks from dba_extents where file_id=’6′ order by block_id;


    select block_id, blocks from dba_extents where file_id=’7′ order by block_id;


    select block_id, blocks from dba_extents where file_id=’8′ order by block_id;


    select block_id, blocks from dba_extents where file_id=’9′ order by block_id;


       



       



       



       



       



  • 사용률 계산

    show parameter block_size



       


    4번에서 조회 된 사항으로 계산을 합니다


    (마지막 block_id * block_size) + (마지막 block * block_size)


    test01.dbf



    ((896 * 8192) + (128 * 8192))/1024/1024 = 8 M


       


    test02.dbf



    ((640 * 8192) + (128 * 8192))/1024/1024 = 6 M


       


    test03.dbf



    ((768 * 8192) + (128 * 8192))/1024/1024 = 7 M


       


    test04.dbf



    ((640 * 8192) + (128 * 8192))/1024/1024 = 6 M


       



  • 데이터파일 리사이즈


       



       


    alter database datafile ‘/u01/app/oracle/oradata/SOON1004/test01.dbf’ resize 8M;


    alter database datafile ‘/u01/app/oracle/oradata/SOON1004/test02.dbf’ resize 6M;


    alter database datafile ‘/u01/app/oracle/oradata/SOON1004/test03.dbf’ resize 7M;


    alter database datafile ‘/u01/app/oracle/oradata/SOON1004/test04.dbf’ resize 6M;


       



       


    해당 사용률 보다 낮게 리사이즈 시 에러가 발생합니다.



       



  • 확인


       



       



  • 블럭 단위로 사용률을 조회 해 resize 하는 방법이지만 실제 사용하는 사이즈 보다 줄지 않음.

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다