请求utl_http包时出现Oracle错误“ORA-28759:无法打开文件”

问题描述 投票:3回答:2

我不能执行以下声明 -

DECLARE
    lo_req  UTL_HTTP.req;
    lo_resp UTL_HTTP.resp;
  BEGIN
    UTL_HTTP.SET_WALLET ('file: C:\app\wallet','abcd@1234');
    lo_req := UTL_HTTP.begin_request('https://wordpress.org/');
    lo_resp := UTL_HTTP.get_response(lo_req);
    dbms_output.put_line(lo_resp.status_code);
   UTL_HTTP.end_response(lo_resp);
END;

我的钱包路径是C:\ app \ wallet,密码是abcd @ 1234。 执行此代码时,显示以下错误:

ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-28759: failure to open file

我怎么解决这个问题?

oracle plsql oracle11g oracle-apex
2个回答
3
投票

documentation for UTL_HTTP.SET_WALLET()有两条关于这条道路的话要说:

  1. 在Windows file:c:\WINNT\Profiles\username\WALLETS上的格式是这样的
  2. 必须可以从数据库服务器访问钱包路径。

很明显,您的代码在第一点失败,因为file关键字和驱动器号之间有空格。

也许第二点也适用:是数据库服务器上的驱动器吗?


0
投票

您需要为cwallet.sso和ewallet.p12文件添加相应用户或组的权限。如果您使用了orakpi实用程序,则可能不存在特权。

对于Windows,

1.选择文件,单击鼠标右键,然后选择“属性”。

2.选择“安全”选项卡,然后单击“更改权限”。

3.单击“添加”>“位置”,然后选择适当的位置。

4.在“选择用户或组”字段中,键入ora_dba。单击“检查名称”按钮以验证ora_dba组是否存在。

5.单击“确定”,将显示“权限条目”对话框。

6.选中“完全控制”旁边的“允许”复选框,然后单击“确定”。

7.在“高级安全性”对话框中单击“应用”。

8.单击“确定”退出对话框。

© www.soinside.com 2019 - 2024. All rights reserved.