Oracle

Oracle:如何在 Oracle 11 中將使用者添加到 HTTP ACL?

  • September 15, 2015

如何將使用者添加到網路 ACL(訪問控制列表)?

執行此程式碼時

declare
   req utl_http.req;
begin
   req := utl_http.begin_request('http://example.com');
end;

我收到此錯誤。

ORA-24247: network access denied by access control list (ACL)

首先,查看您是否有針對埠 80(HTTP 埠)的 ACL。如果你這樣做,它應該看起來像這樣。

select * from dba_network_acls;

HOST     LOWER_PORT UPPER_PORT ACL                     ACLID                                                                                                                                                                                                
---      ---------- ---------- ---                     -----
*        80         80         /sys/acls/www.xml       1FBEC09C32D78F5AE05335D6488A7883                                                                                                                                                         

如果需要重新創建它,可以使用以下命令刪除它:

dbms_network_acl_admin.drop_acl('www.xml');

創建 ACL:

dbms_network_acl_admin.create_acl(
    acl => 'www.xml',
    description => 'WWW ACL',
    principal => 'SCOTT',
    is_grant => true,
    privilege => 'connect'
);

將主機和埠分配給 ACL:

dbms_network_acl_admin.assign_acl(
    acl => 'www.xml',
    host => '*',
    lower_port => 80
);

將使用者添加到 ACL:

dbms_network_acl_admin.add_privilege(
    acl => 'www.xml',
    principal => 'OE',
    is_grant => true,
    privilege => 'connect'
);

版本說明: kevinsky指出這適用於 Oracle 11,但在 Oracle 12 中已更改。

引用自:https://dba.stackexchange.com/questions/115109