ユーザーをネットワーク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)
まず、HTTPポートであるポート80の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で変更されたことを指摘しています。