2024년 3월 6일 수요일

JDBC Receiver채널에서의 오라클 ORA-04054 Database link does not exist에러 내용 정리

아는 지인분이 SAP PO JDBC어댑터에서 아래와 같은 에러가 발생되어 해당 문의 데이터를 AA||@||BBB.COM 로 합쳐서 처리를 하였음
에러내용은
Ora-04054 database link does not exist(데이터베이스 링크 'BBB.COM'이 존재하지 않습니다)

오라클에서 @이 포함한 이메일 데이터가 들어가 DB링크로 인식이되어 에러가 발생된것 같고 PO에서는 기본적으로 JDBC처리시 리터럴로 되어있어 오라클DB+이메일 데이터에서 위와같은 에러가 발생된것 같음

SAP PO에서의 해당에러에 대한 내용을 웹서핑이나 SAP NOTE에서 찾지 못하였는데 ORA-04054: database link GMAIL.COM does not exist-stack overflow 사이트내용을 보면

SQL파서에서는 문자열 리터럴로 인식못하여 DB링크로 처리된다고 하는데 PrepareStatement로 해결이 되는것으로 보임

그리고 UDF 등을 사용하는 방법 외에
JDBC Receiver채널에 Batch Mode라는 옵션이 존재하는데 보통 바인딩변수 처리할때 sqlBindMode = true함께 사용하고 있음
하지만 Batch Mode만 체크하여 위 문제를 해결이 가능할것 같다는 생각이 들고 Batch Mode에서 지원하지 않은 쿼리 실행(action)은 SELECT, INSERT_UPDATE, EXECUTE, SQL_QUERY라고 함

댓글 없음:

댓글 쓰기