개발자로부터 아래와 같은 에러가 발생한다는 연락을 받았다.

찾아보니 오라클에서 이 에러는 아래와 같이 해결하라고 한다.

Error: ORA-3232
Text: unable to allocate an extent of %s blocks from tablespace %s
---------------------------------------------------------------------------
Cause: An attempt was made to specify a HASH_MULTIBLOCK_IO_COUNT value that
is greater than the tablespace's NEXT value
Action: Increase the value of NEXT for the tablespace using ALTER TABLESPACE
DEFAULT STORAGE or decrease the value of HASH_MULTIBLOCK_IO_COUNT.

하지만 필자가 관리하는 시스템은 HASH_MULTIBLOCK_IO_COUNT 가 0으로 설정되어 있는데
이 값이 테이블스페이스의 NEXT 값보다 클때 발생한다고 한다.
그럼 필자가 조치한 방법을 보도록 하겠다.

1. 발생에러

사용자 :  ORA-3232 에러 발생
  -> INSERT 시 발생
   : ERROR at line 5:
     ORA-03232: unable to allocate an extent of 63 blocks from tablespace 3
 
ALERT :  the number of records is already at maximum value (65535)
 
 
2. 원인
 
HASH_MULTIBLOCK_IO_COUNT  값이 tablespace's next 값보다 클때 발생
쥔장이 관리하는 시스템은 HASH_MULTIBLOCK_IO_COUNT 값은 0으로 설정되어 있었고
이 값을 기준으로 밴더마다 값이 다른데 필자 시스템의 max_io_size 값은 65535 으로 설정되어 있었다.
그래서 alert 에 65535 가 발생한 듯 하다.
그런데  다른 TABLESPACE 는 모두 INITIAL 값과 NEXT 값이 65535  보다 크게 설정되어 있었는데
TEMP TABLESPACE 의 INITAILA 과 NEXT 값만 65535  보다 작게 설정되어 있었다.
근데 에러 발생시  이미 TEMP 가 문제된다고 명시가 되어있다.
 
 ORA-03232: unable to allocate an extent of 63 blocks from tablespace 3
 
그럼 3번이 어떤 테이블스페이스일까.
그렇다. 3번이 바로 TEMP TABLESPACE 이다.
 

SQL> select name from sys.ts$ where ts# =3;

NAME                         
------------------------------
TEMP                         


3. 해결

아래와 같이 TEMP TABLESPACE 의 INITIATAIL 값과 NEXT 값을 늘려서 해결하였고 설정 이후 더 이상 에러는 발생하지 않았다.
 
SQL> alter tablespace TS_DJD01 default storage (initial 10m, next 10 );
 
  dbtown-rchwin.jpg
 이 글의 권한은 dbtown.net 에 있습니다.
자료를 스크랩하실땐 출처를 밝혀주세요 ^^