현재 사용률 조회
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 하는 방법이지만 실제 사용하는 사이즈 보다 줄지 않음.