2014-11-02 639 views
1

我无法执行以下说明─Oracle错误“ORA-28759:未能打开文件”请求UTL_HTTP包

DECLARE 
    lo_req UTL_HTTP.req; 
    lo_resp UTL_HTTP.resp; 
    BEGIN 
    UTL_HTTP.SET_WALLET ('file: C:\app\wallet','[email protected]'); 
    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:\程序\钱包和密码ABCD @ 1234 。

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

我该如何解决:
当执行该代码,显示下面的错误?

+0

您可以检查Oracle用户是否具有文件的读取权限。 – vishad 2014-11-02 10:51:16

+1

删除'file:'和'C:\ app \ wallet'之间的空格。祝你好运。 – 2014-11-02 15:22:42

+0

我该如何检查? @vishad – 2014-11-02 15:53:16

回答

2

documentation for UTL_HTTP.SET_WALLET()有两个东西,说的路径:

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

很明显,您的代码不符合第一个要求,因为file关键字和驱动器号之间有空格。

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

+0

我已经在file:和path之间删除了。但仍然收到相同的错误信息。我不确定路径是否可以从数据库用户访问。有什么方法可以确保这个或如何为钱包创建一个目录路径? 请解释。 – 2014-11-03 07:58:07

+0

检查运行Oracle服务器的帐户对提供的文件夹中的电子钱包文件具有访问权限。我遇到了Oracle服务器由其他用户帐户运行并导致此错误的情况。 – Vidra74 2017-04-20 14:15:28

0

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

对于Windows,

1.Select的文件,单击鼠标右键,并选择属性。

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

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

4.在选择用户或组字段中,输入ora_dba.Click Check names按钮以验证ora_dba组是否存在。

5.单击确定并显示权限条目对话框。

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

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

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

相关问题