DataBase
테이블스페이스(TableSpace) Resize
eqzero
2008. 11. 11. 17:12
오라클9i 기준이다.
datafile인 dbf파일이 해당용량을 넘어 버려서 새그멘트가 확장할수 없는 수준까지 도달해버렸다. -_-
(AUTOEXTEND OFF 모드) ..dbf파일의 용량을 다시 조정하자..
- dbf파일은 /oradata/test.dbf 이라 가정.
우선 오라클어드민으로 접근후 500M로 사이즈를 조정하자
SQL> alter database datafile '/oradata/test.dbf' resize 500M;
Database altered.
위의 경우는 파일시스템이 넉넉할때 할수있다.. 넉넉하지 않다면 다른 dbf파일중에 쓸데없이 용량만 먹는녀석은 줄이고 정작 필요한 녀석은 몸집을 키워주자.
1) 우선 현재 DB의 블럭사이즈를 확인하자.
SQL > show parameter db_block_size;
2) 쓸모 없는 dbf파일의 실제 사용량과 전체사이즈를 구해보자. ( TableSpace가 'temp' 라 가정)
SQL> SELECT file_name, BYTES AS "FULL_SIZE",
(SELECT (MAX (block_id) * 8192 + MAX (blocks * 8192))
FROM dba_extents
WHERE file_id = a.file_id) AS "use_size"
FROM dba_data_files a
WHERE tablespace_name = 'temp'
- 8192 수치는 위에서 구한 DB 블럭사이즈이다. 결과는 아래와 같다.
FILE_NAME FULL_SIZE USE_SIZE
/oradata/temp.dbf 419430400 229457920
3) temp.dbf가 사용하고 있는 용량은 229MB정도인데 실제 기본값으로 잡아준 값이 419MB이므로 약 190메가 가량의 용량이 낭비되고 있다는걸 확인할수 있다.
낭비되는 용량은 줄이고 새로 추가될 DBF파일의 용량을 늘려주도록하자.