网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 oracle11g之ACL拙见
范文
    错误样例(使用UTL_HTTP发送http请求时,报出如下错误):
    原因:
    1、Oracle允许使用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)访问外部网络服务,这些API都使用TCP协议。
    2、在Oracle 10g是通过一个基于用户是否被授予执行某个包的许可的 on/off开关来实现的,Oracle 11g引入了细粒度访问网络服务.
    3、通过在XML DB 数据库中使用访问控制列表(ACL)来实现,允许控制哪个用户能够访问哪个网络资源,而不关心包的授权。
    解决办法:
    -- 查询网络访问控制列表 acl
    ?
    1
    Select * From dba_network_acls
    -- 查询访问控制权限列表
    ?
    1
    Select * From dba_network_acl_privileges
    -- 查询数据库中的用户,用户名大小写敏感
    ?
    1
    Select username From dba_users Where username Like '%ITS%'
    分配acl权限,执行如下sql语句:
    begin
    dbms_network_acl_admin.create_acl ( -- 创建访问控制文件(ACL)
    acl => 'utl_http.xml', -- 文件名称
    description => 'HTTP Access', -- 描述
    principal => 'ITS', -- 授权或者取消授权账号,大小写敏感
    is_grant => TRUE, -- 授权还是取消授权
    privilege => 'connect', -- 授权或者取消授权的权限列表
    start_date => null, -- 起始日期
    end_date => null -- 结束日期
    );
    dbms_network_acl_admin.add_privilege ( -- 添加访问权限列表项
    acl => 'utl_http.xml', -- 刚才创建的acl名称
    principal => 'ITS', -- 授权或取消授权用户
    is_grant => TRUE, -- 与上同
    privilege => 'resolve', -- 权限列表
    start_date => null,
    end_date => null
    );
    dbms_network_acl_admin.assign_acl ( -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。
    acl => 'utl_http.xml',
    host => '100.1.2.1', -- ip地址或者域名,填写http://localhost:9000/hello与http://localhost:9000/是会报host无效的
    -- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题
    lower_port => 9000, -- 允许访问的起始端口号
    upper_port => Null -- 允许访问的截止端口号
    );
    commit;
    end;
    begin
    dbms_network_acl_admin.assign_acl ( -- 可以授权多个主机,或者多个主机的多个端口
    acl => 'utl_http.xml',
    host => '10.100.49.138',
    lower_port => 80,
    upper_port => NUll
    );
    commit;
    end;
    请求测试:
    ?
    1
    select utl_http.request('http://localhost:9000/hello?wsdl') From dual;
    若出现no listener,是因为授权主机时不能写localhost,应该写ip地址或者域名,如下图:
    移除acl和权限控制
    撤销分配acl到hostacl -- 与assign对应
    begin
    dbms_network_acl_admin.unassign_acl(
    acl => 'utl_http.xml',
    host => '100.1.2.1',
    lower_port => 9000,
    upper_port => Null
    );
    end;
    删除用户的权限
    ?
    1
    2
    3
    4
    5
    6
    7
    begin
    dbms_network_acl_admin.delete_privilege(
    'utl_http.xml', 'ITS', NULL, 'resolve'
    );
    end;
    -- 删除acl配置文件
    begin
    dbms_network_acl_admin.drop_acl(
    'utl_http.xml'
    );
    end;
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/22 1:56:54