winson 发表于 2018-9-14 10:27:42

oracle resource manager

  resource manager的几个功能
  1.保护某个session分配到的最小的CPU资源,而不管系统的压力和用户的数量。
  2.针对不同的用户和应用分配不同不理的CPU时间。
  3.限制用户组成员的任何操作的并行深度。
  4.管理并行队列中并行的执行顺序,紧急应用的并行可以优先于其它优先级低的并行。
  5.限制group中用户可以使用的并行的数量,这样确保所有的并行资源分配到一个group中。
  6.创建active session pool。Active session pool 由同一个group中用户session被允许并发active的最大数量组成。
  附加的session可以超过这个限制执行,当job 队列中断后,可以指定超时时间。
  7.管理runaway session。1.修改group可以消耗的CPU资源的比率值。2.检测session或者call是否超过了指定CPU或者I/O限制。然后断开session或者call,或者切换到小的CPU值。
  8.阻止优化器估算其运行时间超过指定限制的操作。
  9.限制session 可以被空闲的时间
  10.根据工作量的改变允许数据库使用不同的resource plan。可以动态的修改这些resource plan。也可以在Scheduler中使用resource plan.
  resource manager有如下三个元素
  1.resource consumer group
  是一个用户session 的集合,其根据session需要的进程进行归类,当一个session 创建之后,它就自动根据用户指定的规则映射到对应的consumergroup。
  DBA 也可以手工的切换session 到不同的consumer group。 简言之,就是使用PL/SQL包来切换session 到指定的consumer group
  因为Resource Manager 仅分配资源到一个consumer group,当一个session变成consumer group中的一员时,它的资源分配就由该consumer group 决定
  在数据字典里一直存在3个特定的consumer groups,它们不能修改和删除:SYS_GROUP OTHER_GROUP
  2.resource plan directive
  Resource Manager 根据当前active resource plan的ResourcePlan directive的设置分配资源到consumer groups,resource plan和resource plan directives 是父子关系,每个resource plan directives 只对应一个consumer group。
  每个指令都有一些方法,其用来限制资源分配到某个consumer group。
  3.resource plan
  每个指令都有一些方法,其用来限制资源分配到某个consumer group。
  注意:
  当前active resource plan 不会强制分配直到CPU使用率达到100%,如果CPU 使用率在100%以下,那么数据库不会强制分配资源。
  当强制分配时,其他consumer 不用的allocation都可以被其他的consumergroups使用
  subplan
  resource plan directive 可以参考另一个resource plan,这种情况下,这plan就叫作subplan。Subplan自己包含指令用来分配资源到consumer groups和其他的subplans。每个subplan 分配的资源都是其consumer groups 和subplans的一部分,可以创建任意多个subplans。
  subplan不能循环引用
  权限
  管理Resource Manager必须需要ADMINISTER_RESOURCE_MANAGER权限,在DBA的role里已经包含了这个权限。
  赋予、收回权限必须用DBMS_RESOURCE_MANAGER_PRIVS包来执行
  BEGIN
  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE(
  GRANTEE_NAME   => 'HR',
  PRIVILEGE_NAME => 'ADMINISTER_RESOURCE_MANAGER',
  ADMIN_OPTION   => FALSE);
  END;
  /
  11g R2多出的新功能
  1.ParallelTarget Percentage
  如果一个consumer group 使用了所有的并行,那么当其他consumergroup的高优先级的并行就没有parallel server 来分配,可以通过限制特定consumer group的并行数来避免这个问题。
  2.Parallel Queue Timeout
  当使用并行队列时,如果数据库没有足够的资源来执行并行,那么并行就会进入队列,直到有资源时才变成可用。 但是存在一种情况,就是并行等待了很长的时间才执行,可以设置并行在队列中的最长等待时间来避免这种问题

页: [1]
查看完整版本: oracle resource manager