http://cspark.egloos.com/2132931 에서 퍼옴..
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파일의 용량을 늘려주도록하자.
-----------------------------------------------------------------
추가로
DB tablespace 별 용량 확인 sql
select substr(a.tablespace_name,1,30) tablespace,
round(sum(a.total1)/1024/1024,1) "TotalMB",
round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "USEDMB",
round(sum(a.sum1)/1024/1024,1) "FreeMB",
round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "USED%"
from
(select tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
from dba_free_space
group by tablespace_name
union
select tablespace_name,sum(bytes) total1,0,0,0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name
order by tablespace;
오라클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파일의 용량을 늘려주도록하자.
-----------------------------------------------------------------
추가로
DB tablespace 별 용량 확인 sql
select substr(a.tablespace_name,1,30) tablespace,
round(sum(a.total1)/1024/1024,1) "TotalMB",
round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "USEDMB",
round(sum(a.sum1)/1024/1024,1) "FreeMB",
round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "USED%"
from
(select tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
from dba_free_space
group by tablespace_name
union
select tablespace_name,sum(bytes) total1,0,0,0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name
order by tablespace;
'핸디소프트 > 일일일~' 카테고리의 다른 글
오라클에서 DBF먼저 삭제한 경우 테이블 스페이스 삭제하는 방법 (0) | 2009.07.03 |
---|---|
오라클 테이블스페이스 및 dbf 파일 삭제 (1) | 2009.07.03 |
DB에서 tablespace 를 사용하고 있는 유저 찾는 SQL (0) | 2009.07.01 |
리눅스에서 시간 맞추기(시간 동기화) (0) | 2009.07.01 |
오라클 DB 원격에서 접속하기 (0) | 2009.06.01 |