ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle Resource Manager (ORM) 的理解

oracle Resource Manager (ORM) 的理解

原创 Linux操作系统 作者:JumFlow 时间:2011-12-20 15:26:20 0 删除 编辑

Oracle Resource Manager是Oracle8i开始提供的数据库组件,目的是可以让Oracle定义数据库资源的利用,通过监控数据库各Users的资源利用情况,

  本文档提供了自己对Oracle Resource Manager技术的一些简单理解和实验.

  什么是Oracle Resource Manager

  Oracle Resource Manager是Oracle8i开始提供的数据库组件,目的是可以让Oracle定义数据库资源的利用,通过监控数据库各Users的资源利用情况,

  可以合理的调整数据库的使用.数据库是运行在操作系统之上的一个应用,OS为数据库分配了资源,但OS不能细粒度的控制数据库怎样去使用这些

  资源,ORM可以帮助DBA合理规划这些资源.ORM的使用不会影响数据库的性能.

  跟OS的资源管理相比较,ORM(Oracle Resource Manager)可以提供下列特性:

  防止资源的过度消耗:ORM可以从session级别控制CPU、Undo等系统资源的过度消耗.通过定义使用比例的方法防止CPU被某个session独占耗光;

  合理调度系统资源:单独控制各session的资源利用率,可以将宝贵的系统资源(比如CPU)按照比例分配给不同的用户组,给一些重要的应用提供

  足够的资源,回收浪费的资源;

  控制数据库资源:通过ORM,控制数据库的有限资源(Undo,CPU等)的分配方式;

  兼容操作系统的资源调整:在一个多CPU系统中,ORM兼容OS调度分配,均衡分配CPU的使用;

  Oracle Resource Manager相关内容

  ORM由一系列的组件组成,这些组件的相互配合可以完成比较复杂的数据库资源分配.

  Resource Plans:定义资源配置计划,plans是一个树形结构的组织,可以创建多个plans,但同时只能有一个plan激活被系统使用;

  Resource consumer groups:资源组定义

  Resource allocation method:每个计划中可以定义和控制分配的数据库资源;

  Resource plans directives:将每个计划配置分配到相应的资源组;

  levels:定义了CPU的优先级别,目前可以支持8个级别,当上级的group没有消耗分配的CPU,可以顺延到下个level使用;

  Oracle 9i中ORM(Oracle Resource Manager)

  9i对ORM进行了增强,在8i的基础上提供了多种可控的Oracle资源.

CPU Method(8i提供)

  通过该方法可以对非常稀缺的CPU资源进行分配,Oracle提供了8个levels控制CPU的使用,对不同的group按照百分比分配不同比例的CPU;上一级没有使用完的CPU 资源会自动过度到下个level的group继续使用;

  Degree of Parallelism Limit(8i提供)

  限制每个资源组并行操作的最大并行度;

  Active Session Pool with Queuing

  控制每个resource group可以创建的最大sessions,这里指活动的session,如果一个session进入inactive状态,会自动退出session pool,让一下session进入

  session pool,Oracle默认利用FIFO(First In First Out)的原则维护active session pool队列.如果一个并行的会话进入队列,Oracle会默认其多个session为一个独立的session.

  Execution Time Limit

  有时间我们需要防止一个长查询或大事务耗光系统资源,可通过该参数定义大型查询或事务的运行时间,如果超过了设定的时间,Oracle会自动终止查询或事物,以秒为单位.

  Automatic Consumer Group Switching

  8i中允许session或user可以在资源组之间手动切换,9i增强了这一功能,允许其自动切换。9i提供了两个参数控制资源组的自动替换:

  SWITCH_GROUP:定义session或user切换的新的group;

  SWITCH_TIME:以秒为单位,定义了session或user在原group中任务多长时间后还没结束就可以切换到新的group;

  Undo Pool

  控制每个group可用使用的最大Undo空间,如果事务执行的过程中发现Undo消耗殆尽,后续事务会持续等待直到有可用的Undo空间.

  ORM的管理

  OEM:图形化的ORM管理接口,支持创建、监控ORM等操作;

  DBMS_RESOURCE_MANAGER:ORM的PL/SQL API;

  DBMS_RESOURCE_MANAGER_PRIVS:ORM权限管理API

  ORM相关视图:


  DBA_RSRC_PLANS 
  DBA_RSRC_CONSUMER_GROUPS 
  DBA_RSRC_PLAN_DIRECTIVES 
  DBA_RSRC_CONSUMER_GROUP_PRIVS 
  V$RSRC_PLAN 
  V$RSRC_CONSUMER_GROUP

 ORM(Oracle Resource Manager)的权限

  ORM只有ADMINISTER_RESOURCE_MANAGER系统权限,不支持通过grant,revoke的管理方式;必须通过DBMS_RESOURCE_MANAGER_PRIVS进行GRANT和REVOKE;

  Oracle中使用ORM(Oracle Resource Manager)

  Oracle有一个跟ORM相关的参数:RESOURCE_MANAGER_PLAN,定义好了RESOURCE PLAN之后,必须设置此参数以启用ORM,只有一个RESOURCE PLAN可以激活使用,此参数支持ALTER SESSION/ALTER SYSTEM动态修改.

  ORM举例

  REM 创建测试用户


  CREATE USER OA_USER IDENTIFIED BY iv1234 
  DEFAULT TABLESPACE USERS 
  TEMPORARY TABLESPACE TEMP 
  ACCOUNT UNLOCK; 
  CREATE USER OA_ADMIN IDENTIFIED BY iv1234 
  DEFAULT TABLESPACE USERS 
  TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK; 
  GRANT CONNECT TO OA_USER; 
  GRANT CONNECT TO OA_ADMIN; 
  –创建相关的组 
  BEGIN 
  --清楚ORM临时区域 
  DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA; 
  --创建新的ORM临时区域 
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA; 
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( 
  CONSUMER_GROUP =>'OA_USER_ONLINE', 
  COMMENT =>'创建OA系统的资源管理组'); 
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( 
  CONSUMER_GROUP =>'OA_USER_ADMIN', 
  COMMENT =>'OA 系统的后台服务资源组'); 
  --创建PLAN 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN( 
  PLAN =>'OA_ORM', 
  COMMENT =>'OA 数据库资源计划');


  --创建PLAN DIRECTIVES 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( 
  PLAN =>'OA_ORM', GROUP_OR_SUBPLAN =>'OA_USER_ONLINE', COMMENT =>'oa在线用户资源控制计划', 
  CPU_P1 =>70, 
  CPU_P2 =>0, 
  ACTIVE_SESS_POOL_P1 =>3000, 
  PARALLEL_DEGREE_LIMIT_P1 =>2, 
  MAX_EST_EXEC_TIME =>900); 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(


  PLAN =>'OA_ORM', 
  GROUP_OR_SUBPLAN =>'OA_USER_ADMIN', 
  COMMENT =>'oa在线用户后台服务资源控制计划', 
  CPU_P1 =>10, 
  CPU_P2 =>0, 
  ACTIVE_SESS_POOL_P1 =>5, 
  PARALLEL_DEGREE_LIMIT_P1 =>2, 
  MAX_EST_EXEC_TIME =>900); 
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( 
  PLAN =>'OA_ORM', GROUP_OR_SUBPLAN =>'OTHER_GROUPS', COMMENT =>'其他应用的资源计划', 
  CPU_P1 =>0, 
  CPU_P2 =>100, 
  PARALLEL_DEGREE_LIMIT_P1 =>2); 
  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA; 
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA; 
  END; 
  / 
  –初始化OA_USER、OA_ADMIN的资源组 
  BEGIN 
  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP( 
  GRANTEE_NAME =>'OA_USER', 
  CONSUMER_GROUP=>'OA_USER_ONLINE', 
  GRANT_OPTION=>FALSE); 
  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP( 
  GRANTEE_NAME =>'OA_ADMIN', 
  CONSUMER_GROUP=>'OA_USER_ADMIN', 
  GRANT_OPTION=>FALSE); 
  DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP( 
  USER =>'OA_USER', 
  CONSUMER_GROUP=>'OA_USER_ONLINE'); 
  DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP( 
  USER =>'OA_ADMIN', 
  CONSUMER_GROUP=>'OA_USER_ADMIN'); 
  --允许OA_ADMIN可以替换到GROUP OA_USER_ONLINE 
  DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP( 
  GRANTEE_NAME =>'OA_ADMIN', 
  CONSUMER_GROUP=>'OA_USER_ADMIN', 
  GRANT_OPTION=>FALSE); 
  END; 
  / 
  –查询GROUP的切换 
  select username,initial_rsrc_consumer_group from dba_users WHERE username IN('OA_USER','OA_ADMIN'); 
  USERNAME 
  ------------------------------------------------------------ 
  INITIAL_RSRC_CONSUMER_GROUP 
  ------------------------------------------------------------ 
  OA_ADMIN 
  OA_USER_ADMIN 
  OA_USER 
  OA_USER_ONLINE

 –在数据库中启用OA_ORM plans


  ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='OA_ORM' scope=BOTH; 
  System altered.

  –看看session的登录信息


  select username,resource_consumer_group from v$session where username='OA_USER'; 
  USERNAME 
  ------------------------------------------------------------ 
  RESOURCE_CONSUMER_GROUP 
  ---------------------------------------------------------------- 
  OA_USER 
  OA_USER_ONLINE 
  select username,resource_consumer_group from v$session where username='OA_ADMIN'; 
  USERNAME 
  ------------------------------------------------------------ 
  RESOURCE_CONSUMER_GROUP 
  ---------------------------------------------------------------- 
  OA_ADMIN 
  OA_USER_ADMIN

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25380220/viewspace-713622/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-03

  • 博文量
    72
  • 访问量
    185693