TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-06-17 |
제목 | (V7.3 ~ V8.X) ORA-1654 ERROR ON INDEX SEGMENT | ||
---|---|---|---|
(V7.3 ~ V8.X) ORA-1654 ERROR ON INDEX SEGMENT ============================================= PURPOSE ------- 이 자료는 ORA-1654 error를 해결하기 위한 방법에 대한 자료이다. Problem Description ------------------- DML 작업 시에 다음과 같은 ORA-1654 error가 특정 tablespace에 대하여 발생하는 경우가 있다. 이에 대한 해결방법을 알아보기로 한다. 01654, 00000, "unable to extend index %s.%s by %s in tablespace %s" 예) unable to extend index owner.object by 40964 in tablespace INDEX; Workaround ---------- none Solution Description -------------------- 1. tablespace에 남아 있는 공간 중 가장 큰 연속된 공간의 사이즈를 구합니다. SELECT max(bytes) FROM dba_free_space WHERE tablespace_name = 'TABLESPACE NAME'; ora-1654 에러가 났던 tablespace 이름을 대문자로 위에 써줍니다. 위에 나온 수치는 연속된 block들 가운데 가장 큰 사이즈의 extent를 보여주는 것인데, next extent를 할당하기 위해서는 위에 나온 수치보다 더 큰 사이즈를 필요로 하는 것입니다. "The above query returns the largest available contiguous chunk of space." 2. index의 storage parameter인 next_extent 값과 pct_increase 값을 확인합니다. SELECT next_extent, pct_increase FROM dba_indexes WHERE index_name = 'INDEX NAME' AND owner = 'OWNER'; ora-1654 에러가 발생한 index의 next extent 값과 pct_increase 값이 얼마인지 확인해 보십시오. 위에서 나타난 next_extent 값과 max(bytes) 값을 비교해 보세요. 3. 인스턴스의 db_block_size를 확인합니다. vi $ORACLE_HOME/dbs/initSID.ora db_block_size = 2048 또는 4096 또는 8192일 것입니다. ora-1654 에러에 나타난 by 다음의 수치(예:40964) * db_block_size 만큼의 사이즈가 next_extent(byte 단위) 값과 같을 것이며, 이 만큼의 extent 영역을 할당할 수 없다는 뜻입니다. 따라서 datafile을 추가 시 이 byte 값 이상의 사이즈를 추가해야 합니다. 4. ora-1654 에러를 해결하는 방법 There are several options for solving failure to extend. Manually Coalesce Adjacent Free Extents --------------------------------------- ALTER TABLESPACE The extents must be adjacent to each other for this to work. Add a Datafile: --------------- ALTER TABLESPACE Lower "next_extent" and/or "pct_increase" size: ----------------------------------------------- For non temporary segment problem: ALTER |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |