zoukankan      html  css  js  c++  java
  • Oracle 11gR1中细粒度拜候收集效能(1)

    作者: 黄永兵 来由:51CTO.com 
     
    阅读提醒:Oracle许可运用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)拜候内部收集效能,这些API都运用TCP协议,在上一个数据库版本中(10g)是颠末过程一个基于用户能否被付与实验某个包的许可的on/off开关来完成的,Oracle 11g引入了细粒度拜候收集效能,颠末过程在XML DB 数据库中运用拜候节制列表(ACL)来完成。


    Oracle许可运用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)拜候内部收集效能,这些API都运用TCP协议,在上一个数据库版本中(10g)是颠末过程一个基于用户能否被付与实验某个包的许可的on/off开关来完成的,Oracle 11g引入了细粒度拜候收集效能,颠末过程在XML DB 数据库中运用拜候节制列表(ACL)来完成,许可节制哪个用户可以拜候哪个收集本钱,而不体贴包的受权。

    运用FTP或WebDav可以直接在XML DB 数据库中确立、编削和删除拜候节制列表,Oracle供应了DBMS_NETWORK_ACL_ADMIN和DBMS_NETWORK_ACL_UTILITY挨次包许可从PL/SQL管理拜候节制列表,这些API即是本文的配角。

    确立一个拜候节制列表(ACL)

    拜候节制列表是运用DBMS_NETWORK_ACL_ADMIN挨次包来哄骗的,CREATE_ACL存储过程运用下面的参数来确立一个新的拜候节制列表:

     acl - 拜候节制列表XML文件的名字,发生在XML DB 数据库中的/sys/acls目录下
     description - 拜候节制列表的描摹信息
     principal - 第一个被付与或谢绝的用户账号,年夜小写敏感
     is_grant - TRUE意味着付与了权限,FALSE意味着权限被谢绝
     privilege - 给UTL_TCP, UTL_SMTP, UTL_MAIL和UTL_HTTP付与connect权限,给UTL_INADDR称呼/ip解析付与resolve权限,年夜小写敏感
     start_date - 默许值是NULL,当指定了一个值后,拜候节制列表只要在指定的日期到达时或到达后才被激活
     en_date - 拜候节制列表完毕日期(可选的)

    下面的代码确立了两个测试用户充当委托人,然后又确立了一个新的拜候节制列表。

    CONN sys/password@db11g AS SYSDBA
    CREATE USER test1 IDENTIFIED BY test1;
    GRANT CONNECT TO test1;
    CREATE USER test2 IDENTIFIED BY test2;
    GRANT CONNECT TO test2;
    BEGIN
      DBMS_NETWORK_ACL_ADMIN.create_acl (
        acl          => 'test_acl_file.xml', 
        description  => 'A test of the ACL functionality',
        principal    => 'TEST1',
        is_grant     => TRUE, 
        privilege    => 'connect',
        start_date   => SYSTIMESTAMP,
        end_date     => NULL);
      COMMIT;
    END;
    /
    

    一旦确立住手,拜候节制列表就可以在http://host:port/sys/acls目录下看到。

    运用ADD_PRIVILEGE存储过程将其他的用户或脚色添加到拜候节制列表中,它的参数与CREATE_ACL存储过程的参数雷同,省略了DESCRIPTION参数,同时添加了POSITION参数,它用于设置优先挨次。

    BEGIN
      DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
        acl         => 'test_acl_file.xml', 
        principal   => 'TEST2',
        is_grant    => FALSE, 
        privilege   => 'connect', 
        position    => NULL, 
        start_date  => NULL,
        end_date    => NULL);
      COMMIT;
    END;
    /
    

    每个委托人在拜候节制列表中都被作为一个自力的拜候节制单位(ACE)进行定义,当定义了多条绳尺时,他们按照从上到下的挨次被评价,直到末了一条定义权限的绳尺,这就意味着一个谢绝拜候某个本钱的脚色可以被付与一个用户,但是要是这个用户又作为一个委托人定义在文件中时,这个定义将粉饰脚色的定义,运用POSITION参数担保权限是按挨次进行评价的。

    运用DELETE_PRIVILEGE存储过程移除权限,要是IS_GRANT或PRIVILEGE参数的值是NULL,将移除无缺付与的权限。

    BEGIN
      DBMS_NETWORK_ACL_ADMIN.delete_privilege ( 
        acl         => 'test_acl_file.xml', 
        principal   => 'TEST2',
        is_grant    => FALSE, 
        privilege   => 'connect');
      COMMIT;
    END;
    /
    

    运用DROP_ACL删除拜候节制列表

    BEGIN
      DBMS_NETWORK_ACL_ADMIN.drop_acl ( 
        acl         => 'test_acl_file.xml');
      COMMIT;
    END;
    /
    





    版权声明: 原创作品,许可转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。否则将究查法则责任。

  • 相关阅读:
    杨辉三角
    手动实现md5加密
    戳气球
    重构字符串
    四数相加 II
    背包问题 II
    组合总和 IV
    背包问题 V
    背包问题
    Win 10安装Python及环境变量配置
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1974647.html
Copyright © 2011-2022 走看看