ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01;

ERROR CODE / 설명

: 테이블 스페이스에 연결된 DATAFILE에 사용가능한 공간을 모두 소진하여  데이터를 입력하지 못하는 경우 발생하는 에러 

  ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01;

 

발생 원인

[1] 테이블 생성 시도  
  : SQL을 수행하는 접속계정의 DEFAULT TABLESPACE는 TS_BIG_D01
  CREATE TABLE TB_ADMDONG_PASSENGER_TEST   AS   SELECT * FROM TB_ADMDONG_PASSENGER_TOT;   `

[2] ERROR 발생 
  ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01;

[3] 테이블 스페이스와 관련된 DATAFILE 정보 확인   
  1) 테이블 스페이스 정보 
    SELECT TABLESPACE_NAME
         , EXTENT_MANAGEMENT
         , SEGMENT_SPACE_MANAGEMENT
         , ALLOCATION_TYPE
         , STATUS
         , CONTENTS
         , ( INITIAL_EXTENT / 1024 / 1024 )||'MB' AS INITIAL_EXTENT
         , ( NEXT_EXTENT / 1024 / 1024 )||'MB' NEXT_EXTENT
         , BIGFILE 
     FROM DBA_TABLESPACES 
    WHERE TABLESPACE_NAME = 'TS_BIG_D01';

 2) DATAFILE 정보 
    SELECT TABLESPACE_NAME
         , FILE_NAME
         , BYTES / POWER(1024,2)||' MB' AS BYTES
         , USER_BYTES / POWER(1024,2) ||' MB' AS USER_BYTES
         , MAXBYTES / POWER(1024,2) ||' MB' AS MAXBYTES 
         , AUTOEXTENSIBLE
      FROM DBA_DATA_FILES A 
     WHERE TABLESPACE_NAME = 'TS_BIG_D01';

 

테이블 스페이스 정보 조회
DATAFILE 정보 조회

해결방법

: 아래 SQL을 수행하여 DataFile의 Maxbyte를 늘려 데이터가 유입되도록 한다.

  데이터가 계속 유입되면 USER_BYTES가 증가 할 것이다. 

  ( 단, USER_BYTE는 FILE BYTES를 초과할수 없고 FILE BYTES는 MAXBYTE를 초과 할수 없다. )

 ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCLCDB/TS_BIG_D01.dbf' AUTOEXTEND ON MAXSIZE 2G;

 

정상확인

[1] 테이블 생성 -> 정상
CREATE TABLE TB_ADMDONG_PASSENGER_TEST 
AS  
SELECT * FROM TB_ADMDONG_PASSENGER_TOT;

[2] DATAFILE 정보 
SELECT TABLESPACE_NAME
     , FILE_NAME
     , BYTES / POWER(1024,2)||' MB' AS BYTES
     , USER_BYTES / POWER(1024,2) ||' MB' AS USER_BYTES
     , MAXBYTES / POWER(1024,2) ||' MB' AS MAXBYTES 
     , AUTOEXTENSIBLE
  FROM DBA_DATA_FILES A 
 WHERE TABLESPACE_NAME = 'TS_BIG_D01';

 

DATAFILE 정보 조회 ( USER_BYTES, (FILE) BYTES, MAXBYTES 변화 확인 )