第十四章数据库资源管理器
Oracle9i通过数据库资源管理器(Database Resource Manager)提供了数据库资源管理能力。
14.1 数据库资源管理器概述
14.1.1 什么是数据库资源管理器
数据库资源管理器的主要的目标是提供给Oracle数据库服务器更多的在资源管理上的控制,它围绕的问题源于低效的操作系统管理。
当数据库资源分配决策留给操作系统处理时,用户可能遇到下列问题:
¾庞大的日常开支:当服务器数目很多时,庞大的日常开支导致操作系统在Oracle 服务器间不断切换。
¾低效率调度:当Oracle 服务器装有闩锁(latch)时,操作系统减少对它们的调度,这种调度是低效率的。
¾无价值的资源分配:操作系统无法在不同任务间分配CPU资源。
¾无法管理数据库指定资源:比如,并行移动(parallel slaves)和活动会话。
Oracle数据库资源管理器通过允许数据库更多地控制分配机器资源,来帮助解决以上问题。特别地,使用数据库资源管理器可以完成下列操作:
¾确保某些用户处理少量的资源,不考虑对系统的加载和用户的数量。
¾按比例将CPU 时间分配给不同的用户和应用程序,分配有效的处理资源。在数据仓库中,分配给ROLAP 应用程序的时间百分比可能比批作业的高。
¾限制一组用户可使用的并行程度。
¾创建一个活动会话池(active session pool)。这个水由会话允许了在一组用户内并发激活的用户的一个指定最大的数量组成。在超过最大值以外的附加的会话放置到执行队列中,你能指定一个超时时期, 在超时后队列中的工作将流产。
¾基于管理员定义的标准允许用户从一个组自动切换(automatic switching)到另外的组。如果特定用户组的一个成员创建一个会话执行的时间比指定的数量长, 那句会话能自动地被换到有不同的资源要求的另外的组用户。
¾防止那些估计执行时间比预先规定的限制长的操作执行。
pending¾创建一撤消池(undo pool)。这个池由一组用户消费的撤消空间数量组成。
¾对实例进行配置,使其能使用特殊的资源分配方法。例如DBA可动态地改变这个方法,不用关机和重启动实例。
用户通过数据库资源管理器定义的Oracle数据库资源管理元素如下所示:
资源用户组(Resource consumer group):根据资源处理需求,将用户会话成组。
资源规划(Resource plan):包含指出将哪些资源分配给资源用户组的命令.
资源分配方法(Resource allocation method):数据库资源管理器分配特殊资源时采用的方
605
法/策略,由资源用户组和资源规划使用。
资源规划命令(Resource plan directives):管理员使用这些命令将资源用户组与特殊规划连接起来,并在资源用户组之间分配资源。
14.1.2 理解资源规划
资源规划指明属于该规划的资源用户组和在用户组之间分配资源的命令。用户使用DBMS_RESOURC
E_MANAGER程序包创建和维护数据库资源管理器的元素:资源用户组、资源规划命令和资源规划。规划信息存储在数据字典的表中,有几个视图可用来查看规划数据。
1. 一级资源规划
这个例子只有一级规划,如下图所示。该规划为资源用户组分配资源。Great Bread公司有一个GREA T_BREAD规划,该规划在三个资源用户组之间分配CPU资源。分别分配SALES 60%的CPU 时间;分配MARKET 20%的CPU 时间;剩下的20%分配给DEVELOP。
图14-1 一个简单的规划
2. 多级资源规划
但是一个规划不可能只包含资源用户组,它还可包含其它规划,称为子规划。那么Great Bread 公司可能将如图14-2 那样分配CPU 时间:
606
图14-2 一个包含子规划的简单规划
这种情况下GREA T_BREAD规划仍将CPU资源分配给MARKET用户组,但它现在还将CPU资源分配给SALES_TEAM 子规划和DEVELOP_TEAM 子规划。子规划再依次将CPU 资源分配给用户组。图14-
2举例说明了规划模式(plan schema),这种模式包含一个top plan(GREA T_BREAD)和所有分支。
一个子规划或用户组有可能有多个父规划,但规划模式中不会出现循环。如果Great Bread 公司有日规划和夜规划,那么一个子规划有可能有多个父规划,比如日规划和夜规划都包含SALES 子规划,但它们分别分配给SALES不同的CPU 资源。
下面再介绍其它一些本章需要用到的概念。
资源消费用户组:资源消费用户组是一组用户或会话,那一起基于他们处理需要被组织到一起。资源计划指令指定在一个计划模式钟资源是如何在消费者组和子规划之中被分配的。
资源计划指令:资源分配指令指定资源如何被分配到资源消费用户组。数据库资源经理提供若干分配资源方法。
CPU方法:这个方法使你能够指定CPU资源将如何在消费者组或子规划中被分配。多级的CPU资源分配(有8级)在一个计划模式内提供一个优先CPU使用方法。第2级仅在第1级不能使用它所有的资源后才可以得到资源。多级不仅提供一个优先的方法,它们还提供显式地指定如何分配主要资源和剩余资源的一个方法。
使用队列激活会话池:你能控制在一个消费者组以内允许的并发激活的会话的最大数量。这个最大值指明指派活动会话池。当池是满的时候,会话不能被初始化,会话被放进一个排队。当一句活动的会话完成时,这时,在队列中的第一个会话被安排执行。你也可以指定工作在执行队列中的一个超时时期,一旦超时,工作将错误流产。
并行度限制:指定平行度限制使你能够在一个消费用户组内控制任何并行操作的最大度。
自动消费用户组切换(Switching):这个方法使你能够指定一个资源控制标准,如果满足,引起会话自动切换到另外的消费用户组。
执行时间限制:你可以指定操作允许的最大执行时间。如果Oracle估计一个操作将变比指定的最大执行时间长,操作将被错误终止。这个错误能被捕获并重新进行操作。
607
撤消池:你可以为每个消费用户组指定一撤消池。一撤消池控制可以由一个消费者组产生撤消数量的总数。如果撤消数量的总数超过限制,当前产生撤消的DML语句将被终止。消费者组没有另外成员能进一步执行数据操作直到撤消空间从池中释放。
14.2 管理数据库资源管理器
用户必须具有系统特权ADMINISTER_RESOURCE_MANAGER,方能管理数据库资源管理器。最有代表性的是具有ADMIN选项的数据库管理员具有这个权利,作为或等价于DBA 角。
作为数据库资源管理器的管理员,允许执行DBMS_RESOURCE_MANAGER 程序包中的所有过程。这些过程在表14-1中列出。在本章的后几节说明它们的用途。
表14-1 DBMS_RESOURCE_MANAGER 过程
过程描述
CREATE_PLAN 命名资源规划并指定其分配方法
UPDATE_PLAN 更新资源规划的注释
DELETE_PLAN 删除资源规划及其命令
DELETE_PLAN_CASCADE 删除资源规划及其所有分支
CREATE_CONSUMER_GROUP 命名资源用户组并指定其分配方法
UPDATE_CONSUMER_GROUP 更新资源用户组的注释
DELETE_CONSUMER_GROUP 删除资源用户组
CREATE_PLAN_DIRECTIVE 指出一个规划中或多级规划模式的子规划间将资源
分配给资源用户组的资源规划命令 UPDATE_PLAN_DIRECTIVE 更新规划命令
DELETE_PLAN_DIRECTIVE 删除规划命令
CREATE_PENDING_AREA 在对规划模式的改变中创建一挂起区域(临时区域) VALIDATE_PENDING_AREA 确认所有对规划模式的挂起的改变
CLEAR_PENDING_AREA 清除待解决区域中的所有的挂起的改变
SUBMIT_PENDING_AREA 提交所有对规划模式的改变
SET_INITIAL_CONSUMER_GROUP 为用户设置初始化用户组
SWITCH_CONSUMER_GROUP_FOR_SESS 转换指定会话的用户组
SWITCH_CONSUMER_GROUP_FOR_USER转换属于指定用户的所有会话的用户组
作为ADMIN 管理员,你也许选择将管理员特权授权给其他用户或角,这样就可能使用DBMA_RESOURCE_MANAGER_PRIVS 程序包。该程序包包含了表14-2 中列举的过程。
608
表14-2 DBMA_RESOURCE_MANAGER_PRIVS过程
过程描述
GRANT_SYSTEM_PRIVILEGE 授权ADMINISTER_RESOURCE_MANAGER系统特
权给一用户或角
REVOKE_SYSTEM_PRIVILEGE 取消用户或角的ADMINISTER_RESOURCE_
MANAGER系统特权
GRANT_SWITCH_CINSUMER_GROUP 授权许可给用户角或PUBLIC 以便切换到指定的资
源用户组
REVOKE_SWITCH_SONSUMER_GROUP 取消用户角或PUBLIC 切换到指定的资源用户组的
许可
下例中,将管理员特权授权给SCOTT用户但不授权SCOTT ADMIN选项,因此SCOTT 能够执行DBMA_RESOURCE_MANAGER程序包中的所有过程,但SCOTT不能使用GRANT_SYSTEM_PRIVILEGE过程将管理员特权授权给其他用户。
EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE -
(GRANTEE_NAME => 'scott', PRIVILEGE_NAME => 'ADMINISTER_RESOURCE_MANAGER',
ADMIN_OPTION => FALSE);
用户可使用REVOKE_SYSTEM_PRIVILEGE过程回收这个特权。
14.3 创建和管理资源规划
14.3.1 创建一个简单资源规划
使用CREA TE_SIMPLE_PLAN过程,你能快速创建足够满足很多情况的一个简单的资源计划。这个过程使你能够执行一个单语句创建消费用户组,并分配资源给他们。
你可以为CREA TE_SIMPLE_PLAN过程指定下列参数:
SIMPLE_PLAN:计划的名称;
CONSUMER_GROUP1:第一个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
CONSUMER_GROUP1:第二个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
CONSUMER_GROUP1:第三个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
CONSUMER_GROUP1:第四个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
CONSUMER_GROUP1:第五个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
CONSUMER_GROUP1:第六个组的消费用户组名字;
GROUP1_CPU:分配给这个组的CPU资源;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论