복붙노트

[SQL] ORA-01652 : 테이블 스페이스 시스템 128에 의해 임시 세그먼트를 확장 할 수 없습니다 : 어떻게 확장하려면?

SQL

ORA-01652 : 테이블 스페이스 시스템 128에 의해 임시 세그먼트를 확장 할 수 없습니다 : 어떻게 확장하려면?

나는 542512 개 행이 큰 Oracle 테이블을 가지고있다. 나는 다음과 같은 명령으로 대한 인덱스를 만들려고 할 때 세 개의 열을 가지고 :

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

오라클은 다음과 같은 오류를 제공합니다 :

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 명령은 일을 할 것 같다,하지만 확실이하고있는 매개 변수를 호출하는 방법을 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.각 테이블 스페이스는 데이터를 저장하는 데 사용하는 하나 이상의 데이터 파일을 가지고있다.

    각 테이블 스페이스는 데이터를 저장하는 데 사용하는 하나 이상의 데이터 파일을 가지고있다.

    데이터 파일의 최대 크기는 데이터베이스의 블록 크기에 따라 달라집니다. 나는 32기가바이트 당 데이터 파일의 최대에 당신과 함께 그 잎, 기본적으로 그렇게 생각합니다.

    실제 제한이 32기가바이트 경우 다음을 실행 찾으려면 :

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

    아래의 첫 번째 열로 얻을 결과를 비교, 그것은 당신의 최대 데이터 파일 크기가 무엇인지 표시됩니다.

    나는 오라클 개인 버전 11g R2를 가지고 기본에가 8192 블록 크기 (데이터 파일 당 32기가바이트)을 가지고 설치합니다.

    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
    

    당신은 당신이 가지고있는 데이터 파일을 손쉽게 찾을 수이 쿼리를 실행할 수 있습니다, 그들은과 관련된 어떤 테이블, 당신은 currrently (상기 32기가바이트를 초과 할 수 없습니다)로 최대 파일 크기를 설정 한 것 :

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

    MAXSIZE_SET는 당신이 데이터 파일을 설정 한 최대 크기입니다. 또한 관련은 (그 이름이 무엇을 의미하는지 않습니다) ON에 AUTOEXTEND 옵션을 설정 한 여부입니다.

    당신의 데이터 파일은 낮은 최대 크기를 가지고 또는 자동 확장은 간단하게 실행할 수에없는 경우 :

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

    크기가에서 / 근처 32기가바이트 인 경우 자동 확장이 켜진 다음, 그래, 당신은 테이블에 대한 또 다른 데이터 파일이 필요합니까 :

    alter tablespace system add datafile 'path_to_your_datafiles_folder\name_of_df_you_want.dbf' size 10m autoextend on maxsize unlimited;
    
  2. from https://stackoverflow.com/questions/25350703/ora-01652-unable-to-extend-temp-segment-by-128-in-tablespace-system-how-to-ext by cc-by-sa and MIT license