Oracle/[oracle] Error

[유틸리티 에러] IMP-00032: SQL문이 버퍼 길이를 초과했습니다.

kr98gyeongim 2022. 3. 25. 10:41

■에러

IMP-00032: SQL문이 버퍼 길이를 초과했습니다.

 

■현상

이 에러는 현지 서버에서 데이터를 Import를 하기 위해 사내 환경에서 실행했을 때 발생한 에러이다.

미리 작성한 배치파일을 가지고 imp.exe를 실행한 결과 

import시 IMP-00032: SQL statement exceeded buffer length가 발생했다.

 

■원인

IMP-00032 오류는 테이블을 조작하는 DDL, DML이 사용하는 버퍼가 부족하기 때문에 발생한다.

컬럼수가 많은 큰 사이즈의 데이터(LONG/LOB 등) 등을 삽입하고 있는 것이 예상된다.

Import 유틸리티(utility)의 디폴트 버퍼 사이즈는 XXXX 바이트이기 때문에 디폴트 상태로는 버퍼 크기가 작다.

 

■대응

Import 유틸리티(utility)에서 사용할 수 있는 버퍼 크기를 늘린다.

또한 버퍼 크기의 확장은 import의 퍼포먼스도 향상한다.

최저 1048576(1MB) 이상 1MB 단위로 증가시켜 가는 모습을 보면서 최적치를 찾는다.

REDO 로그버퍼의 크기를 참고하면 좋다.

※ 일정 이상 크게 설정을 하더라도 퍼포먼스는 향상되지 않고, 메모리의 낭비가 된다.

 

# IMP BUFFER=1048576 ~