【问题标题】:How to solve ORA-24247: network access denied by access control list (ACL) in Oracle stored procedure如何解决 ORA-24247:Oracle 存储过程中的访问控制列表 (ACL) 拒绝网络访问
【发布时间】:2020-01-30 02:14:01
【问题描述】:

我有一个 Oracle 11g 存储过程,它接受一个文本地址并使用 Google API 返回纬度和经度。此过程使用 oracle 的 utl_http 功能。

阅读有关使用此功能的Oracle文档,我看到有必要创建一个钱包并绑定一个Google HTTPS URL证书。已经这样做了。

我还必须创建 ACL 资源、添加权限和分配 ACL。已经这样做了。

但是当我执行该过程时,它总是出现错误 ORA-24247

create or replace procedure test_procedure(p_address IN VARCHAR2, p_lat out number, p_long out number) is
l_http_request   UTL_HTTP.req;
...
begin
l_address := REPLACE(TRIM('TRAV. JOAQUIM A. SILVA, 286 - ALVORADA - GUANHÃES/MG CEP: 39740-000'), ' ', '+');
...
UTL_HTTP.set_wallet('file:/MY_ORACLE_HOME/admin/MY_SCHEMA/wallet', NULL);
l_request := 'https://maps.googleapis.com/maps/api/geocode/json?address=' ||
             l_address || chr(38) || 'language=pt-BR'||'&key=MyGoogleKey';
l_http_request := utl_http.begin_request(l_request,'GET','HTTP/1.1'); -- this line presents ORA-24247 error
...

我的 ACL 命令

begin
DBMS_NETWORK_ACL_ADMIN.create_acl(
acl => 'www_google.xml', 
description => 'Google Maps Access', 
principal => 'MY_DB_USER', 
is_grant => TRUE, 
privilege => 'connect', 
start_date => NULL, 
end_date => NULL
); 

dbms_network_acl_admin.add_privilege (
acl        => 'www_google.xml',
principal  => 'MY_DB_USER',
is_grant   => TRUE,
privilege  => 'connect',
start_date => null,
end_date   => null
);

dbms_network_acl_admin.add_privilege (
acl        => 'www_google.xml',
principal  => 'MY_DB_USER',
is_grant   => TRUE,
privilege  => 'resolve',
start_date => null,
end_date   => null
);

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'www_google.xml',
host => '*.google.com',
lower_port => 25,
upper_port => 8080
);
end;

【问题讨论】:

  • 你应该发布Oracle版本,ACL在11g和12c之间有很大的不同。
  • 我的Oracle版本是11g
  • this answer 可能会对您有所帮助。
  • 如果您发布用于创建 ACL 的代码也会有所帮助。
  • 您的 ACL 引用 *.google.com。您的请求正在访问 maps.googleapis.com。您的 ACL 至少需要授予对 googleapis.com 的访问权限

标签: oracle stored-procedures oracle11g procedure ora-24247


【解决方案1】:

问题是 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 块中主机参数中的 URL 错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2021-04-08
    相关资源
    最近更新 更多