每会话I/O限制
在Oracle之前的版本中,资源组自动切换完全基于单个会话的时间或单个调用的时间,Oracle 11g现在可以基于I/O阀值(最大请求数或M字节)进行资源组自动切换,新的阀值通过CREATE_PLAN_DIRECTIVE存储过程执行,其中包含了大量的改变。
(1) CPU_P1-CPU_P8参数已经废弃,改为使用MGMT_P1-MGMT_P8参数。
(2) SWITCH_TIME_IN_CALL参数已被汰,换作了SWITCH_FOR_CALL参数。
(3) SWITCH_IO_MEGABYTES和SWITCH_IO_REQS参数现在已经可用,此外还有SWITCH_TIME参数,这三个参数默认为NULL,意味着无限制。
新的I/O参数意味着可以切换资源组了,可以基于消耗时间、I/O请求和I/O数量的任何组合来取消SQL或杀死会话,下面的例子显示如果消耗时间超过120秒、I/O请求数量超过5000或I/O请求超过1024M,会将当前会话从资源消耗组oltp_group切换到batch_group组。
DBMS_RESOURCE_MANAGER.create_plan_directive (
plan => 'my_plan',
group_or_subplan => 'oltp_group',
comment => 'OLTP Group',
mgmt_p1 => 70,
switch_group => 'batch_group',
switch_time => 120,
switch_io_reqs => 5000,
switch_io_megabytes => 1024,
switch_for_call => TRUE);
END;
/
下面的例子显示如果I/O资源消耗超过了4096M,会话将会被杀掉。
DBMS_RESOURCE_MANAGER.create_plan_directive (
plan => 'my_plan',
group_or_subplan => 'oltp_group',
comment => 'OLTP Group',
mgmt_p1 => 70,
switch_group => 'KILL_SESSION',
switch_io_megabytes => 4096);
END;
/
AWR中的资源管理器统计
新DBA_HIST_RSRC_PLAN和DBA_HIST_RSRC_CONSUMER_GROUP视图已加入到V$ RSRC_PLAN_HISTORY和V$RSRC_CONS_GROUP_HISTORY视图中,提供了一个历史数据的查看。
V$RSRCMGRMETRIC_HISTORY视图显示取自V$RSRCMGRMETRIC视图的一个小时的数据。
在http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/dbrm011.htm#ADMIN11916有完整的资源管理视图介绍。