利用Oracle Database Resource Manager实现UNDO表空间的quota

1.查出当前使用的是哪个resource plan

select * from GV$RSRC_PLAN

 

2.创建pending area

begin
  dbms_resource_manager.create_pending_area;
end;

 

3.创建consumer group

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP=>'SALES_APP',COMMENT=>'');
END;

 

4.创建plan directive

begin
  dbms_resource_manager.create_plan_directive(PLAN=>'DB_CONSOLIDATE_PLAN',group_or_subplan => 'SALES_APP',undo_pool => 1024,comment=>'');
end;

 

5.设置session到consumer group的映射:

begin
  dbms_resource_manager.SET_CONSUMER_GROUP_MAPPING(DBMS_RESOURCE_MANAGER.ORACLE_USER,'USER4','SALES_APP');
end;

 

6.检查pending area是否有错误:

begin
  dbms_resource_manager.validate_pending_area;
end;

 

7.提交pending area中的内容:

begin
  dbms_resource_manager.submit_pending_area;
end;

 

8.设置用户到consumer group的权限:

BEGIN
  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP (GRANTEE_NAME   => 'USER4',CONSUMER_GROUP => 'SALES_APP',GRANT_OPTION   =>  FALSE);
END;

 

以上的步骤为实现对特定用户的undo空间设置quota的语句,有以下几点还需要注意:

(1) select * from V$RSRC_PLAN_HISTORY 可以通过这个语句来查询数据库的resource plan 的切换情况。

(2) 根据(1)中的语句可能会发现resource plan是不停地自动切换的,如下想让其不自动切换,可以在设置resource plan 的时候设置 FORCE: 前缀,例如:

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'FORCE:mydb_plan';

FORCE:前缀对于DBMS_RESOURCE_MANAGER.SWITCH_PLAN 这个存储过程中的resource plan 的指定也同样适用。

其实加FORCE:前缀影响的是V$RSRC_PLAN_HISTORY视图的ALLOWED_AUTOMATED_SWITCHES

 

 

以上。

posted @ 2018-12-03 13:18  张不正  阅读(357)  评论(0)    收藏  举报
返回顶部