Datafile resize에 대한 오해(?)
2012. 1. 20. 13:41ㆍOracle/Oracle Study
반응형
용량이 부족할 때 데이터 파일을 추가 해주는 형식으로 주로 하였기에, resize 할 때 문제를 생각해 보지 않았다.
autoextensible 되고 있는 데이터 파일을 resize를 하면 resize 한 만큼의 용량으로 자동 증가가 되는 줄 알았다.
하지만 아래 결과를 보게 된다면 생각이 달라질 것이다.
테이블 스페이스를 생성하고 상태 변경까지 각각의 size를 확인해 볼 것이다.
1. 테이블 스페이스 생성
### create tablespace tbs_auto
### datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' size 1m
### autoextend on next 8k maxsize 3m;
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 1 3 .9375 2
2. 테이블 생성 후 ora-01653 에러가 발생할 때 까지 실행(총 11만건 인서트 후에 에러 발생)
### insert into tbs_auto_tab select 'AA',sysdate from dual connect by level <= 10000;
* 사용된 공간 및 최대 증가 될 수 있는 값을 확인 한다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 2.0625 3 2 .9375
3. 해당 테이블 스페이스의 데이터 파일을 단순히 resize 한다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 5m;
* resize 를 하였기때문에 datafile 자체가 증가 되어 현재 데이터는 없지만 불필요한 공간을 확보하고 있는 상태가 된다.
최대 자동 증가량은 3MB 이고 이미 공간도 확보된 상태이기 때문에 더이상 자동 증가는 되지 않는다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 5 3 4.9375 -2
4. 이미 공간이 확보된 상태이지만 자동증가되게 설정을 해본다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' autoextend on next 8k maxsize 5m
* Max extensible 이 증가 된 것을 확인 할 수 있다.
* 참고로 다음 증가되는 용량(next 8k) 수정한다면 dba_data_files의 increment_by에서 수정된 것을 확인 할 수 있다.
* 그러나 현재까지는 사용되지 않는 공간을 계속 확보하고 있는 상태이다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 5 5 4.9375 0
5. 사용되지 않는 공간을 삭제하려면 간단하다. 다시 resize를 하면 된다.
실제 사용되고 있는 용량보다 적게 resize를 한다면 아래와 같은 에러가 발생 할 것이다.
ORA-03297 : file contains used data beyond requested RESIZE value
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 3m;
* 현재용량과 사용되고 있는 용량이 변화되었다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 3 5 2.9375 2
autoextensible 되고 있는 데이터 파일을 resize를 하면 resize 한 만큼의 용량으로 자동 증가가 되는 줄 알았다.
하지만 아래 결과를 보게 된다면 생각이 달라질 것이다.
테이블 스페이스를 생성하고 상태 변경까지 각각의 size를 확인해 볼 것이다.
1. 테이블 스페이스 생성
### create tablespace tbs_auto
### datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' size 1m
### autoextend on next 8k maxsize 3m;
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 1 3 .9375 2
2. 테이블 생성 후 ora-01653 에러가 발생할 때 까지 실행(총 11만건 인서트 후에 에러 발생)
### insert into tbs_auto_tab select 'AA',sysdate from dual connect by level <= 10000;
* 사용된 공간 및 최대 증가 될 수 있는 값을 확인 한다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 2.0625 3 2 .9375
3. 해당 테이블 스페이스의 데이터 파일을 단순히 resize 한다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 5m;
* resize 를 하였기때문에 datafile 자체가 증가 되어 현재 데이터는 없지만 불필요한 공간을 확보하고 있는 상태가 된다.
최대 자동 증가량은 3MB 이고 이미 공간도 확보된 상태이기 때문에 더이상 자동 증가는 되지 않는다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 5 3 4.9375 -2
4. 이미 공간이 확보된 상태이지만 자동증가되게 설정을 해본다.
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' autoextend on next 8k maxsize 5m
* Max extensible 이 증가 된 것을 확인 할 수 있다.
* 참고로 다음 증가되는 용량(next 8k) 수정한다면 dba_data_files의 increment_by에서 수정된 것을 확인 할 수 있다.
* 그러나 현재까지는 사용되지 않는 공간을 계속 확보하고 있는 상태이다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 5 5 4.9375 0
5. 사용되지 않는 공간을 삭제하려면 간단하다. 다시 resize를 하면 된다.
실제 사용되고 있는 용량보다 적게 resize를 한다면 아래와 같은 에러가 발생 할 것이다.
ORA-03297 : file contains used data beyond requested RESIZE value
### alter database datafile '/oracle/oradata/orcl/Disk3/tbs_auto.bdf' resize 3m;
* 현재용량과 사용되고 있는 용량이 변화되었다.
TABLESPACE AUT current(MB) Max extensible(MB) used(MB) extensible(MB)
-------------- --- ------------ ------------------- ------------ --------------
TBS_AUTO YES 3 5 2.9375 2
반응형
'Oracle > Oracle Study' 카테고리의 다른 글
characterset 변환 (0) | 2012.07.17 |
---|---|
minus 에 대한 위험(?) (0) | 2012.06.21 |
sh 계정 생성 (0) | 2011.12.26 |
10g에서 sys_connect_by_path 사용법 (0) | 2011.12.01 |
특정 IP만 접속 (0) | 2011.11.21 |