새소식

300x250
3. Database/Error모음

[DB 에러] ORA-01653 테이블스페이스 확장 불가

  • -
728x90

ORA-01653: THE_TABLE_NAME 테이블을 1024<으>로 TS_USER1 테이블스페이스에서 확장할 수 없습니다.

 

테이블 스페이스(즉 공간부족) 가 부족해서 데이터가 더이상 들어갈 수 없을때 발생하는 에러.

 

 

해결방법은 3가지로 추려진다.

 

1. TableSpace를 resize를 통해서 늘여주거나 Datafile을 추가한다.
2. TableSpace의 AutoExtend를 off일 경우 on을 변경한다.
3. Table별 데이타 용량을 체크하여 불필요한 데이타를 삭제한다.

 

 

해결방법 1

 

1.1 기존의 데이터파일의 사이즈를 늘려준다.

alter database datafile '/data/kkk/kkk01.dbf/ resize 5M;

1.2 데이터 파일을 추가한다.

alter tablespace app_data ADD DATAFILE '/data/kkk/kkk02.dbf' size 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M;

 

 

해결방법 2

1. TableSpace가 autoextend가 off되어 있는지 확인한다.
select    file_name, tablespace_name, bytes, autoextensible
from     dba_data_files
where    tablespace_name='KKK';

2. 테이블 스페이스를 자동으로 사이즈가 늘어날 수 있도록 autoextend를 on으로 설정한다.
alter     database datafile '/data/kkk/kkk01.dbf' autoextend on next 1M

 

다만 여기서 주의 사항이 있다.

 

tablespace 생성할 때 autoextend는 기본이 off 이기 때문에 tablespace의 size를 alter로 수정한다고 해도 실제로 데이터는 기존값 이상 들어가지 않는것 같다.

 

create tablespace kck datafile 'kkk' size 10M; 

 

위와 같이 생성하고 데이터파일이 full 이 된 이후

 

alter tablespace kkk alter datafile 'kkk' size 20M;

한다면 실제로 v$tablespace나 datafile의 크기는 20M로 늘어나지만 insert는 용량부족으로 실패하게 된다.

 

초기의 autoextend가 off 기 때문에 tablespace의 사이즈가 늘어나지 않는것으로 판단 하고 다음과 같이 해결 하였다.
alter tablespace kkk alter datafile 'kkk' autoextend on maxsize 20M;

 

해결 방법 3
1. Table별 사용량을 조회한다.

2. 데이타 삭제후 purge 작업을 수행한다.

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.