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]