728x90
반응형
ORA-03113 : 통신 채널에 EOF가 있습니다.
ORA-03113 : end-of-file on communication channel
발생 원인
일반적으론 DB서버와의 통신이 끊겼을 때 발생한다고한다.
참고 : https://docs.oracle.com/cd/E11882_01/server.112/e17766/e2100.htm#sthref1271
나의 경우엔 위 내용과는 무관했지만 해당 로그가 남았다.
원인은 CLOB + Merge문에 있었다. 테이블끼리 관계로 Merge하지 않고, 파라미터로 값을 넣어 Merge문의 Insert/Update 쿼리를 작성하였는데, CLOB에 저장될 때 파라미터의 데이터 길이가 너무 길어서 발생하였다.
일반적인 INSERT/UPDATE문에선 저장 시 문제가 없었는데 Merge문에서만 발생했다.
해결 방법
환경마다 다르지만 저장을 허용하는 최대 Byte(4000)가 있다. (로컬, 개발/운영 달랐음)
1. TO_CLOB 으로 감싸 최대 허용 Byte를 늘려준다. ( 상황에 따라 유효성을 추가하여 방어할 수도 있다. )
2. 테이블 데이터 복사가 아닌 꼭 파라미터로 저장해야하는지 확인한다. ( 테이블 데이터 복사로 회피 가능 )
3. Merge문 해제
4. Oracle 버전 업그레이드
1~3번 모두 상황에 맞게 적절히 사용하여 해결할 수 있었다.
출처 : https://docs.oracle.com/cd/E11882_01/server.112/e17766/e2100.htm#sthref1271
출처2 : https://groups.google.com/g/mybatis-user/c/b43d3VNGY24?pli=1
728x90
반응형
'Oracle' 카테고리의 다른 글
[Oracle] ORA-01839 : "지정된 월에 대한 날짜가 부적합합니다" 해결 feat. ChatGPT (0) | 2023.04.04 |
---|---|
DBCP(Database Connection Pool) validationQuery 설정 (0) | 2022.06.18 |
[Oracle] 테이블 생성 시간/정보 확인하기 (0) | 2022.03.26 |
[Oracle] 시퀀스 채번 증가 이상 - Cache (0) | 2022.01.29 |
[Oracle] PL/SQL 프로시저 내 테이블 권한 문제 (0) | 2021.10.18 |
댓글