programing

ORA-01652: 테이블스페이스에서 온도 세그먼트를 128까지 연장할 수 없습니다.시스템: 연장 방법

stoneblock 2023. 3. 5. 09:25

ORA-01652: 테이블스페이스에서 온도 세그먼트를 128까지 연장할 수 없습니다.시스템: 연장 방법

542512행으로 구성된 큰 Oracle 테이블이 있습니다.여기에는 3개의 열이 있으며 다음 명령을 사용하여 인덱스를 작성하려고 하면 다음과 같습니다.

  CREATE INDEX FTS_INDEX ON FILTERED_TEKLI_IIS_TABLOSU (ilAdi,ilceAdi,caddeAdi)

Oracle은 다음 오류를 발생시킵니다.

SQL Error: ORA-01652: unable to extend temp segment by 128 in tablespace SYSTEM
01652. 00000 -  "unable to extend temp segment by %s in tablespace %s"
*Cause:    Failed to allocate an extent of the required number of blocks for
       a temporary segment in the tablespace indicated.
*Action:   Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
       files to the tablespace indicated.

이 오류를 검색해 보니 Oracle이 테이블 결합, 인덱스 생성 등의 작업을 실행할 때 중간 데이터를 저장할 공간이 부족할 때 생성됩니다.하지만 이에 대한 명확한 해결책을 찾지 못했습니다.이러한 ALTER TABLESPACE 명령어와 ADD DATAFILE 명령어는 효과가 있는 것 같습니다만, 이러한 명령어를 호출하는 방법과 어떤 파라미터를 사용하는지 잘 모르겠습니다.어떤 도움이라도 주시면 감사하겠습니다.

각 테이블스페이스에는 데이터를 저장하는 데 사용되는 데이터 파일이 하나 이상 있습니다.

데이터 파일의 최대 크기는 데이터베이스의 블록 크기에 따라 달라집니다.디폴트로는 데이터 파일당 최대 32GB의 용량이 남는다고 생각합니다.

실제 제한이 32GB인지 확인하려면 다음 절차를 따릅니다.

select value from v$parameter where name = 'db_block_size';

결과를 아래 첫 번째 열과 비교하면 최대 데이터 파일 크기가 표시됩니다.

Oracle Personal Edition 11g r2를 가지고 있으며 기본 설치에서는 블록 크기가 8,192개(데이터 파일당 32GB)였습니다.

Block Sz   Max Datafile Sz (Gb)   Max DB Sz (Tb)

--------   --------------------   --------------

   2,048                  8,192          524,264

   4,096                 16,384        1,048,528

   8,192                 32,768        2,097,056

  16,384                 65,536        4,194,112

  32,768                131,072        8,388,224

이 쿼리를 실행하여 현재 보유하고 있는 데이터 파일, 관련지어져 있는 테이블 영역 및 최대 파일 크기(상기 32GB를 초과할 수 없음)를 확인할 수 있습니다.

select bytes/1024/1024 as mb_size,
       maxbytes/1024/1024 as maxsize_set,
       x.*
from   dba_data_files x

MAXSIZE_SET은 데이터 파일을 설정한 최대 크기입니다.또한 AUTOEXTEND 옵션을 ON으로 설정했는지 여부도 관련이 있습니다(이름에 따라 달라집니다).

데이터 파일의 최대 크기가 작거나 자동 확장이 켜져 있지 않은 경우 다음과 같이 실행할 수 있습니다.

alter database datafile 'path_to_your_file\that_file.DBF' autoextend on maxsize unlimited;

그러나 크기가 32GB이거나 거의 32GB이고 자동 확장이 켜져 있으면 테이블스페이스에 다른 데이터 파일이 필요합니다.

alter tablespace system add datafile 'path_to_your_datafiles_folder\name_of_df_you_want.dbf' size 10m autoextend on maxsize unlimited;

언급URL : https://stackoverflow.com/questions/25350703/ora-01652-unable-to-extend-temp-segment-by-128-in-tablespace-system-how-to-ext