SW/Database / / 2025. 3. 2. 19:39

ORA-29268: HTTP client error during communication / 원인과 해결 방법

반응형

ORA-29268: HTTP client error during communication

ORA-29268 오류는 Oracle의 UTL_HTTP 패키지를 사용하여 HTTP 요청을 보낼 때 네트워크 문제 또는 서버 응답 오류로 인해 발생합니다.

 

 

ORA-29268: HTTP client error during communication / 원인과 해결 방법

 

 

오류 원인

ORA-29268 오류는 다음과 같은 원인으로 인해 발생할 수 있습니다:

  1. 잘못된 URL 또는 응답 없음: - 요청한 URL이 존재하지 않거나, 서버가 응답하지 않을 수 있습니다.
  2. 방화벽 또는 네트워크 차단: - 내부 방화벽 설정으로 인해 외부 HTTP 요청이 차단될 수 있습니다.
  3. UTL_HTTP 설정 문제: - `UTL_HTTP.REQUEST` 또는 `UTL_HTTP.BEGIN_REQUEST` 호출 시 적절한 인수를 전달하지 않았을 수 있습니다.
  4. SSL/TLS 문제: - HTTPS 요청 시 Oracle Wallet이 적절하게 설정되지 않았거나, 신뢰할 수 없는 인증서 문제일 수 있습니다.

해결 방법

ORA-29268 오류를 해결하기 위해 다음 단계를 수행할 수 있습니다:

  1. 요청 URL이 정상적인지 확인: - 웹 브라우저 또는 `curl` 명령어로 URL이 정상 응답하는지 확인합니다.
    curl -I https://example.com
  2. Oracle에서 네트워크 액세스 허용: - ACL(Access Control List)을 추가하여 HTTP 요청을 허용합니다.
    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'example.com',
        lower_port => 80,
        upper_port => 443,
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'HR',
                           principal_type => xs_acl.ptype_db));
    END;
    /
  3. UTL_HTTP 요청 코드 확인: - 요청을 보낼 때 올바른 형식으로 설정합니다.
    DECLARE
      req UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
      buffer VARCHAR2(4000);
    BEGIN
      req := UTL_HTTP.BEGIN_REQUEST('https://example.com', 'GET');
      resp := UTL_HTTP.GET_RESPONSE(req);
    
      LOOP
        UTL_HTTP.READ_LINE(resp, buffer);
        DBMS_OUTPUT.PUT_LINE(buffer);
      END LOOP;
    
      UTL_HTTP.END_RESPONSE(resp);
    EXCEPTION
      WHEN UTL_HTTP.END_OF_BODY THEN
        UTL_HTTP.END_RESPONSE(resp);
    END;
    /
  4. SSL 인증서 확인 및 Oracle Wallet 구성: - HTTPS 요청 시 Oracle Wallet이 올바르게 설정되었는지 확인합니다.
    orapki wallet display -wallet /path/to/wallet
  5. 방화벽 및 네트워크 설정 확인: - 서버에서 외부 HTTP/HTTPS 요청이 차단되지 않았는지 확인합니다.
    telnet example.com 80

간단 요약

  • ORA-29268 오류는 HTTP 요청이 실패했을 때 발생합니다.
  • 해결 방법: - 요청 URL이 유효한지 확인 - ACL을 추가하여 네트워크 액세스 허용 - `UTL_HTTP.BEGIN_REQUEST` 및 `UTL_HTTP.GET_RESPONSE` 코드 검토 - HTTPS 요청 시 Oracle Wallet을 설정 - 방화벽 및 네트워크 설정 점검
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유