ORA-24247问题解决

2014-11-24 12:39:14 · 作者: · 浏览: 0

错误信息:

scott@ORCL> select utl_http.request('www.baidu.com') from dual;
select utl_http.request('www.baidu.com') from dual
*
第 1 行出现错误:
ORA-29273: HTTP 请求失败
ORA-06512: 在 "SYS.UTL_HTTP", line 1722
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝
ORA-06512: 在 line 1

1、首先,创建一个 ACL:

BEGIN
    dbms_network_acl_admin.create_acl(acl         => 'httprequestpermission.xml',
                                      DESCRIPTION => 'Normal Access',
                                      principal   => 'CONNECT',
                                      is_grant    => TRUE,
                                      PRIVILEGE   => 'connect',
                                      start_date  => NULL,
                                      end_date    => NULL);
END;
此处,参数 principal => ‘CONNECT‘ 表示该 ACL 适用于 CONNECT 角色。您可以在此处定义一个用户或角色。该 ACL 是作为一个httprequestpermission.xml文件创建的。

2、创建完毕后,您可以进行检查以确保该 ACL 已增加:

SELECT any_path
FROM resource_view
WHERE any_path like ‘/sys/acls/%.xml‘;
输出结果如下:
ANY_PATH
/sys/acls/ANONYMOUS/ANONYMOUS7374c7db65774bb19286fbd57c8aa08d_acl.xml
/sys/acls/OLAP_XS_ADMIN/OLAP_XS_ADMIN2a6ce0de601f4cd6ad84d2f9ef8d4f2_acl.xml
/sys/acls/OLAP_XS_ADMIN/OLAP_XS_ADMIN2e9f0e58c864be499b7fcf3ab6f4877_acl.xml
/sys/acls/OLAP_XS_ADMIN/OLAP_XS_ADMIN31e66de0a358445c96b060337e8039a1_acl.xml
/sys/acls/OLAP_XS_ADMIN/OLAP_XS_ADMINa121d072af9640a5a1ead75f3595f42_acl.xml
/sys/acls/OLAP_XS_ADMIN/OLAP_XS_ADMINe5b5db8c76b94aed83a423d7b36dd6fc_acl.xml
/sys/acls/all_all_acl.xml
/sys/acls/all_owner_acl.xml
/sys/acls/bootstrap_acl.xml
/sys/acls/email_server_permissions.xml
/sys/acls/httprequestpermission.xml
/sys/acls/ro_all_acl.xml
/sys/acls/ro_anonymous_acl.xml

注意输出结果中的最后一行,它显示您刚刚创建的 ACL。

3、接下来,为该 ACL 增加一个权限:

在本示例中,您将尝试将该 ACL 局限于用户 SCOTT。您还可以定义开始和结束日期。

begin
    dbms_network_acl_admin.add_privilege(acl        => 'httprequestpermission.xml',
                                         principal  => 'SCOTT',
                                         is_grant   => TRUE,
                                         privilege  => 'connect',
                                         start_date => null,
                                         end_date   => null);
end;
4、分配将受该 ACL 制约的主机以及其他详细信息:
begin
    dbms_network_acl_admin.assign_acl(acl        => 'httprequestpermission.xml',
                                      host       => 'www.baidu.com',
                                      lower_port => 80,
                                      upper_port => NULL);
end;

5 、在本示例中,您指定“用户 SCOTT 只能调用主机 www.baidu.com,并能使用 80 端口。”现在让我们来试一下:

scott@ORCL> select utl_http.request('www.baidu.com') from dual;

UTL_HTTP.REQUEST('WWW.BAIDU.COM')
--------------------------------------------------------------------------------
--------------------
html> nt="text/html;charse
t=utf-8"> href="//t3.baidu.co
m"/> ef="//t11.baidu.com"
/>百度一下,你就知道</ti<br /> tle><style >html,bod<br /> y{height:100%}html{overflow-y:auto}#wrapper{position:relative;_position:;min-hei<br /> ght:100%}#content{pa</p><div class="article-middle-ad" style="margin: 30px 0; padding: 20px 0; text-align: center; clear: both;"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3873923678443673" crossorigin="anonymous"></script> <!-- cppentry文章内广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3873923678443673" data-ad-slot="5723320063" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <p>---------------...........................<br /> </p> 但该规则仅适用于 www.baidu.com。如果您调用其他 Web 站点,调用将失败,错误原因仍为ORA-24247。这是最细粒度水平上的安全性。如果您的企业需要连接到主机www.baidu.com,您可以在允许该连接的同时阻止对任何其他主机的访问,从而防止恶意用户使用该功能来访问所有其他的主机。 <p><strong>6、要了解 ACL 的详细信息,请查询 DBA_NETWORK_ACLS 视图:</strong></p> <p>--------------------以SYSDBA身份--------------------------------<br /> </p> <p></p> <pre class="brush:java;">SELECT acl, principal, privilege, is_grant, TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date, TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date FROM dba_network_acl_privileges;</pre> <p></p> <p>/sys/acls/email_server_permissions.xml SCOTT connect true <br /> /sys/acls/httprequestpermission.xml CONNECT connect true <br /> /sys/acls/httprequestpermission.xml SCOTT connect true <br /> <br /> <br /> </p> <p>-----------------------------</p> <p>Dylan presents.</p> </dd></span> </div> <div class="pagination mt-40"> </div> <div class="article-footer mt-60 pt-40"> <div class="share-box"> <!-- Baidu Share Code Simplified or Removed if not needed. Keeping basic structure --> <div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more"></a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a></div> <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> </div> <div class="prev-next mt-20"> <div class="prev"> <span class="label">上一篇</span> <a href="bencandy.php?fid=57&id=67832" onclick="" class="link">Oracle全局临时表</a> </div> <div class="next"> <span class="label">下一篇</span> <a href="bencandy.php?fid=57&id=67830" onclick="" class="link">Oracle数据泵:impdp以及expdp</a> </div> </div> </div> </div> </div> </div> </div><!-- End .container.main-content --> <footer class="container mt-20 site-footer"> <div id="copyright"> Copyright © https://www.cppentry.com all rights reserved <a href="http://www.miibeian.gov.cn" target="_blank">粤ICP备13067022号-3</a><br> </div> </footer> <script> // Logic for double click admin editing </script> <script> if(typeof clickEdit !== 'undefined') clickEdit.init(); </script> </body> </html>