본문 바로가기
→ 데이터베이스/ORACLE 관리

[ORACLE] 테이블 스페이스 용량 늘리기

by 벅스쭌 2012. 5. 15.
반응형

 

OS : Windows XP
프로그램 및 버전 : ORACLE 11g

※ 주의사항 : 실제 적용 전 테스트 필요

1. 작업개요
- 테이블 스페이스 용량이 조금만 있으면 꽉 찬다.

2. 작업내용
1) 테이블 스페이스 사용량 확인하기
2) 테이블 스페이스 공간 늘리기

3) 테이블 스페이스 자동증가 설정하기

1) 테이블 스페이스 사용량 확인하기

- 테이블 스페이스 공간을 늘리기 위해서는.. 우선 테이블 스페이스 사용량을 확인해 봐야 한다.

1. 시스템 계정으로 로그인하기

c:\> sqlplus "/as sysdba"

 

2.  다음 스크립트 실행하기

SQL> select tf.tablespace_name ts_name, sum(tf.total_space) total_size
,round(sum(tf.total_space-ts.free_space),1) used_size
,sum(round(ts.free_space,1)) free_size
,round(sum(tf.total_space-ts.free_space)/sum(tf.total_space),3)*100 used_ratio
from
(select tablespace_name, sum(bytes)/1024/1024 free_space from dba_free_space group by tablespace_name) ts,
(select tablespace_name, sum(bytes)/1024/1024 total_space from dba_data_files group by tablespace_name) tf
where
tf.tablespace_name = ts.tablespace_name
group by tf.tablespace_name
order by 5 desc;

 

 

- 여기서 실제로 데이터를 담는 테이블 스페이스는 ***_DATA 이다. 현재 ***_DATA의 테이블스페이스 전체 사이즈는 약 42G이며, 사용중인 공간은 23G정도이다. 남은 공간은 18G이고 56%사용중에 있다.

* 참고로 테이블스페이스의 데이터파일은 한개당 30G가 MAX이며, 지금 42G가 할당되어 있는것은 데이터파일을 2개설정하여 사용하고 있기 때문이다.

- TOTAL_SIZE : 전체 사이즈

- USED_SIZE : 사용중인 사이즈

- FREE_SIZE : 남은 공간 

- USED_RATIO : 사용중인 %

* 솔직히 지금 상태에서는 테이블스페이스 공간을 더 늘리지 않아도 상관없지만. 기록을 위해서...


2) 테이블 스페이스 공간 늘리기

SQL> alter database datafile 'd:\***db\***_data1.ora' resize 2000m;

설명 : 테이블스페이스의 데이터파일인 ***_data1.ora파일의 사이즈를 20G로 증가시킨다.

 

지금 테이블스페이스 공간을 더 늘리면;;; 하드 용량이 부족하기 때문에 예시는 패스.

- 용량을 증가시키는 스크립트에서 2000m(20G)이라는 것은 지금 사이즈에서 2000m(20G)을 추가하는 것이 아니라 만일 현재 15G로 설정되어 있다면 20G로 설정한다는 의미 이다. 만일 현재 설정되어 있는 사이즈보다 작게 설정하려 한다면 다음과 같은 오류메시지와 함께 아무 변화없으니 걱정하지 않아도 된다.

 


3) 테이블 스페이스 자동증가 설정하기

- 매번 테이블스페이스 공간을 확인해가며 증가시켜주는 것은 불편하고 스트레스이기 때문에 다음과 같이 설정을 하면 테이블스페이스 공간이 꽉 찰때마다 자동으로 증가한다.

SQL> ALTER DATABASE DATAFILE 'd:\***DB\***_DATA1.ORA' AUTOEXTEND ON NEXT 1000M;

설명 : 테이블 스페이스가 꽉 차면 자동으로 1000m(1G) 증가 하도록 한다.

 

* 자동증가 최대 값 지정하기

SQL> ALTER DATABASE DATAFILE 'd:\***DB\***_DATA1.ORA' AUTOEXTEND ON MAXSIZE 30000M;

설명 : 위에서 설명하였지만, 하나의 데이터파일은 30G가 최고값이다. 그렇기 때문에 위의 스크립트를 이용해서 30G이상 증가시키지 않게 한다.

 

요것도 예시는 패스


3. 작업결과

- 이렇게 설정은 했지만... 정확히 테이블 스페이스가 꽉차고 얼마 후에 증가하는지는... 잘모르겠지만. 확실히 자동증가가 된다. 하지만 자동증가만 너무 믿고 확인 안하지 말고... 일정주기로 확인하여 DB에 문제가 없도록 하자!


참고 : 나의 경험. 


위 사이트를 참고 하였습니다.

 

반응형