oracle 11g 中的socket访问权限问题

来源:互联网 发布:安装软件重启后没有了 编辑:程序博客网 时间:2024/06/15 23:47

最近在把1个oracle数据库从9i 32位移植到11g 64位下时遇到多个问题,其中一个就是tcp访问权限的问题,在oracle 9i中,数据库的存储过程访问tcp无需进行权限认真,11g加强了安全性,需要进行授权,.

 

授权只需要执行1和2即可在存储过程中执行tcp相关的操作了。

1.创建授权文件
BEGIN
  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl          => 'filename.xml',
    description  => 'ACL functionality',
    principal    => 'abcd',
    is_grant     => TRUE,
    privilege    => 'connect',
    start_date   => SYSTIMESTAMP,
    end_date     => NULL);

END;

2.授权
BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl (
    acl         => 'filename.xml',
    host        => '192.168.0.1',  --此处写上需要访问的IP地址
    lower_port  => 21,
    upper_port  => 21);  --此处为端口

END;

3.
--取消授权
BEGIN
  DBMS_NETWORK_ACL_ADMIN.unassign_acl (
    acl         => 'TNTMAIL.xml',
    host        => '192.168.1.*',
    lower_port  => 8000,
    upper_port  => NULL);

  COMMIT;
END;

4.
--这一个就drop所有
BEGIN
  DBMS_NETWORK_ACL_ADMIN.drop_acl (
    acl         => 'TNTMAIL.xml');

  COMMIT;
END;
--这一个就drop所有


--查询
SELECT host, lower_port, upper_port, acl
FROM   dba_network_acls;
/
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;