oracle dbms_network_acl_admin,PL/SQL Challenge 每日一题:2014-2-21 内置包DBMS_NETWORK_ACL_ADMIN...

最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。

以往旧题索引:

http://www.itpub.net/forum.php?m ... eid&typeid=1808

原始出处:

http://www.plsqlchallenge.com/

作者:Frank Schmitt

运行环境:SQLPLUS, SERVEROUTPUT已打开

注:本题给出答案时候要求给予简要说明才能得到奖品

我们的内部WEB服务器优点不靠谱,所以我们的经理要求我写一个PL/SQL过程来检查服务器是否可用。

为了达到这个目的,我创建了一个用户名为PLCH_WWW,在它的模式下创建了一个过程:

CREATE OR REPLACE PROCEDURE plch_connect_to(p_Host IN varchar2)

IS

c  utl_tcp.connection;

BEGIN

c := utl_tcp.open_connection(remote_host => p_Host,

remote_port =>  80);

utl_tcp.close_connection(c);

dbms_output.put_line('SUCCESS');

END plch_connect_to;

/

当我试图运行这个过程,我看到了这个错误:

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

哪些选项(由DBA执行)可以解决这个问题,使得下列代码块以PLCH_WWW执行之后:

BEGIN

plch_connect_to('www.plsqlchallenge.com');

END;

/

会显示 "SUCCESS" ?

假设下列条件成立:

1. DBA具备执行所有选项所必需的权限。

2. 数据库有网络连接并且可以访问www.plsqlchallenge.com

(A)

BEGIN

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl         => 'plch.xml',

description => 'PLCH URI',

principal   => 'PLCH_WWW',

is_grant    => true,

privilege   => 'connect');

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl       => 'plch.xml',

principal => 'PLCH_WWW',

is_grant  => true,

privilege => 'resolve');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl  => 'plch.xml',

host => 'www.plsqlchallenge.com');

COMMIT;

END;

/

(B)

BEGIN

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl         => 'plch.xml',

description => 'PLCH URI',

principal   => 'PLCH_WWW',

is_grant    => true,

privilege   => 'connect');

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl       => 'plch.xml',

principal => 'PLCH_WWW',

is_grant  => true,

privilege => 'resolve');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl  => 'plch.xml',

host  => '*');

COMMIT;

END;

/

(C)

BEGIN

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl         => 'plch.xml',

description => 'PLCH URI',

principal   => 'PLCH_WWW',

is_grant    => true,

privilege   => 'connect');

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl       => 'plch.xml',

principal => 'PLCH_WWW',

is_grant  => true,

privilege => 'resolve');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl  => 'plch.xml',

host => 'www.plsqlchallenge.com',

lower_port => 80,

upper_port => 80);

COMMIT;

END;

/

(D)

BEGIN

dbms_network_acl_admin.disable_acl;

COMMIT;

END;

/

(E)

GRANT CONNECT ANY PORT TO PLCH_WWW

/

(F)

GRANT DBA TO PLCH_WWW

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值