기술 정보
home
채널 소개
home

과도한 bind parameter 사용으로 인한 오류

문서 유형
장애 해결
분야
App개발
키워드
bind
SIGSEGV
적용 제품 버전
6FS07
6FS07PS
7FS02
7FS02PS
1 more property

현상

특정 쿼리 수행 시, SIGSEGV가 발생합니다.
단일 SQL, 프로시저, 혹은 BEGIN ~ END 블록 내에서 바인드 파라미터를 과도하게 사용한 경우 오류가 발생할 수 있습니다.
[sys.log] [06-09T07:00:48.762168] [FRM-751] [I] Signal 'SIGSEGV'(11) caught (TID = 751, OS_THR_ID = 28530, PID = 25799): si_addr = 0000000100000001 : the cause of the signal can be found in a process callstack file. [06-09T07:00:54.099932] [FRM-751] [I] THROW. ec=ERROR_SESS_KILLED(-12001) [ Session has been closed. ] (csr_id:12) [tbsvr_signal.c:1618:sync_sig_handler] ... [tbsvr.out] [751] *** 2024/06/09 07:00:48.762 *** Signal 11 (SIGSEGV) caught (TID = 751, SESSID = 751, OS_THR_ID = 28530, PID = 25799): si_addr = 0000000100000001 : the cause of the signal can be found in a process callstack file. [751] Thread stack: 00007f09fc72f000--00007f09fcf3f000 [751] client : ip [65.130.11.36] process [JDBC Thin Client] logon time : [2024/06/09 06:50:38] ... [751] current sql : "BEGIN INSERT INTO SYMPHONY.EX_B10_DEPARTMENT ( DN , CN , DEPARTMENTNUMBER , EPCOMPANYDOMAIN , EPDEPTLEVEL , EPDEPTORDER , EPENDEPARTMENT , EPENHIGHDEPTNAME , EPENMANAGERNAME , EPENMANAGERTITLE , EPENORGANIZATIONNAME , EPENSUBORGNAME , EPHIGHDEPTNAME , EPHIGHDEPTNUMBER , EPINDEPTCODE , EPLOWDEPT , EPMANAGERID , EPMANAGERNAME , EPMANAGERTITLE , EPORGANIZATIONNUMBER , EPORGMAKEDATE , EPPREFERREDLANGUAGE , EPSUBORGCODE , EPSUBORGNAME , O , OU , TIMESTAMP ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , sysdate ); ... COMMIT; END;
SQL
복사

원인

하나의 INSERT 문에는 26개의 바인드 파라미터가 사용되었으나, BEGIN ~ END 블록 내에서 5000개 이상의 INSERT 문이 하나의 SQL(PSM)로 처리되어 전체 바인드 파라미터 개수가 65,535개를 초과하여 오류가 발생합니다.

해결

단일 SQL 문에서 사용되는 바인드 파라미터의 총 개수가 65,535개를 초과하지 않도록 아래와 같이 쿼리를 수정하여 해결합니다.
단건 INSERT 수행 후, 일정 건수 단위로 COMMIT 처리
JDBC 사용 시, autocommit=false로 설정 후 batch update 수행