TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | CREATE TABLE/INDEX 시 TEMPORARY SEGMENT의 생성(ORA-1652 ERR | ||
---|---|---|---|
CREATE TABLE/INDEX 시 TEMPORARY SEGMENT의 생성(ORA-1652 ERROR)
============================================================== 일반적으로 ora-1652 error "unable to extend temp segment by %s in tablespace %s" 는 sort 작업을 요구하는 transaction (order by, group by, distinct ..... 등을 포함하는 sql 문)이 temp segment를 발생시켜 작업을 수행하는 도중 다음 extent를 얻지 못하여 발생하는 사항이며, temp tablespace에 물리적으로 space를 확보하도록 조치하고 있습니다. 그러나, create table이나 create index를 수행 시 ora-1652 "unable to extend temp segment by %s in tablespace %s" error를 만나는 경우가 있습니다. 일반적으로 user의 temporary tablespace가 temp로 지정되어 있다면, temp tablespace에서 ora-1652 error가 발생할 것으로 기대되지만, user의 default tablespace나 해당 object를 생성하고자 지정된 tablespace에서 ora-1652 error가 발생할 수 있으며, 이는 object 생성 중, 중간 단계의 image를 temporary segment로 발생시키기 때문입니다. . create table new_table as select * from old_table; command 수행 시 위의 문장을 수행 시 temp segment의 발생을 확인하여 보면, user의 default tablespace (tablespace 지정 시에는 지정된 tablespace)에 temporary segment가 발생하게 되며, command의 종료와 동시에 temporary segment는 new_table object로 변환되게 됩니다. . create index command를 수행 시 create index command를 수행 시 temp segment는 temp tablespace와 user의 default tablespace (tablespace 지정 시 지정된 tablespace)에 동시에 발생 하게 됩니다. 실제적인 sort 작업은 temp tablespace에서 이루어며, sort 작업이 진행되는 동안 default tablespace의 temporary segment는 지속적인 증가를 하게 됩니 다. Index 생성 종료 시 temp tablespace의 temporary segment는 release되며, default tablespace의 temporary segment는 index object로 변환되게 됩니다. 물론, default tablespace의 temporary segment의 생성 size는 create table / index 시 주어진 storage parameter에 의해 생성되며, storage parameter가 주어지지 않은 경우에는 default tablespace의 storage 절에 따라 생성됩니다. Default tablespace에 생성되는 temporary segment는 object 생성의 중간 단계 로 보이며, 이로 인한 ora-1652 error는 error가 발생한 tablespace에 물리적 으로 space를 확보하여 해결할 수 있습니다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |