暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用UTL_HTTP调用webservice的第二次运行失败,ORA-12535: TNS: 操作超时

ASKTOM 2020-04-01
233

问题描述

嗨,汤姆,

请帮我解决这个问题。

我正在使用以下过程来调用HTTPS wsdl,这在通过Putty在SQL提示符登录到DB server(AIX) 上调用此过程时第一次工作正常。
但是当我尝试在相同的SQL提示符上再次执行相同的命令时失败,并且出现以下异常。我必须从操作系统注销并再次登录才能使其正常工作。

ORA-12535: TNS:operation timed out
ORA-06512: 在 “USER1.SHOW _ HTML_FROM_URL”,第36行
ORA-06512: 在 “SYS.UTL_HTTP”,第380行
ORA-06512: 在 “SYS.UTL_HTTP”,第1127行
ORA-06512: 在 “USER1.SHOW _ HTML_FROM_URL”,第13行
ORA-06512: 在第1行

代码中是否缺少任何设置以使下一个HTTP连接正常工作?或数据库端的任何其他设置,我们应该与DBA团队进行检查。
请帮助。因为这将以批处理模式运行,并且在同一会话中有几个api调用。

这里使用的URL是:
https://hostname.test.com:9443/configuration_rules?wsdl

create or replace PROCEDURE show_html_from_url (
  p_url  IN  VARCHAR2,
  p_username IN VARCHAR2 DEFAULT NULL,
  p_password IN VARCHAR2 DEFAULT NULL
 l_http_request   UTL_HTTP.req;
  l_http_response  UTL_HTTP.resp;
  l_text           VARCHAR2(32767);
BEGIN
  -- Make a HTTP request and get the response.
utl_http.set_wallet('file:/opt/oracle/wallet', null); -- wallet is created with --nologin option
  utl_http.set_detailed_excp_support(TRUE);
  l_http_request  := UTL_HTTP.begin_request(p_url);
  -- Use basic authentication if required.
  IF p_username IS NOT NULL and p_password IS NOT NULL THEN
    UTL_HTTP.set_authentication(l_http_request, p_username, p_password);
  END IF;
  l_http_response := UTL_HTTP.get_response(l_http_request);
  -- Loop through the response.
  BEGIN
      UTL_HTTP.read_text(l_http_response, l_text, 32766);
      DBMS_OUTPUT.put_line (l_text);
    END LOOP;
  EXCEPTION
    WHEN UTL_HTTP.end_of_body THEN
      UTL_HTTP.end_response(l_http_response);
EXCEPTION
  WHEN OTHERS THEN
    UTL_HTTP.end_response(l_http_response);
    RAISE;