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;
/





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

原文地址:https://www.cnblogs.com/zgqjymx/p/1974647.html