Oracle数据库资源管理

标签: 图书推荐 数据库 | 发表时间:2012-07-20 10:23 | 作者:baiyuzhong
出处:http://www.programmer.com.cn

一般来说,Oracle数据库都属于中大型的系统,这类系统的用户会话(Session),小则一两百,多则上千,这些用户会话要求Oracle数据库执行的任何指令都需要耗费系统资源,而系统资源毕竟是宝贵且有限的,一旦突然涌进大量的用户会话,对于有限的资源可能会略显不足。但这些会话必定有轻重缓急之分,对于重要且紧急的用户会话需求理当获得多一点的系统资源,对于一些不重要或不紧急的用户会话,则可以使用较少的系统资源慢慢处理。

有鉴于此,Oracle数据库资源管理器(Database Resource Manager)应运而生,Oracle数据库资源管理器的主要功能,就是在有限的系统资源下,能够让数据库管理员有效且适当地规划用户对于系统资源的利用,避免资源的过度耗费。在功能上,数据库资源管理可以利用CPU的使用量、使用的并行度、闲置的时间、会话总数,以及运行时间等来控制资源的使用。

数据库环境中,一定会存在同时有多个用户对数据库进行作业的情况,而这些需求要执行的作业所耗费的时间与优先级必定不同,因此,就可利用数据库资源管理根据各用户会话的需求与应用属性分成不同的组,然后依照不同需求与应用属性组,分配不同的数据库系统资源,这样就可以将有限的资源做最大的利用。数据库资源管理的组成要素如下。

  • 资源使用者组(Resource Consumer Group):是由许多用户会话组成,这些会话有相同的资源使用请求。当新建立一个会话时,RDMB会根据您的设置自动把它分配到某个组。数据库管理员还可以手动调整某个会话所属的组。当一开始用资源使用者组时,会有三个特别的资源使用者组,这些组不能被修改或删除,其相关定义如下。
  1. SYS_GROUP:属于Oracle数据库系统管理SYS与SYSTEM的资源使用者组。
  2. DEFAULT_CONSUMER_GROUP:如果有用户没有指定到用户组,则该用户属于DEFAULT_CONSUMER_GROUP。
  3.  OTHER_GROUP:原则上,OTHER_GROUP不能算是一个资源使用者组,因为它的使用方式是,当某个资源使用者组没有资源计划(Resource Plan)时,其组成员默认会指定给OTHER_GROUP。
  • 资源计划指令(Resource Plan Directive):是使用资源的条件,如分配给某个特定的资源使用者组,使其在某个特定的时段可使用80%的CPU,或是限制某个使用者组活动会话的数量等,而资源指令只是被包含在资源计划中,资源计划和指令间有着一对多的关系,在资源计划中不能包含两条相同的指令。
  • 资源计划(Resource Plan):包含一系列指令,这些指令决定了每个使用者组的资源使用分配,在一个数据库中,同一段时间内只能启用一个资源计划,但一个资源计划还可以包含多个子资源计划,每个资源计划都必须包含给OTHER_GROUP分配的指令。

以上就是数据库资源管理的三个组成要素。如应用在实际的例子上,假设有一套数据库系统必须执行联机事务处理系统(Online Transaction Processing,OLTP)与报表系统,但由于上班时间的事务量比较大,因此,可将70%的资源使用分配给OLTP应用,而报表系统可分配20%的使用资源,剩下的10%就分配给其他没有在资源计划内的组所使用,如图所示。

图1 数据库资源管理示意图

 

图中显示,此资源计划在白天时分配给OLTP用户组70%的CPU使用资源,给REPORTING用户组20%的CPU使用资源,剩下的10%是给OTHER_GROUPS使用,该示例是很单纯的资源分配使用方式,但在一般企业内的数据库系统运行时,所遇到的情况可能并不那么单纯,此时就可利用子计划(Subplans)的方式来分配资源,如下图所示。

图2 子计划

上图显示,在主要的资源计划下,有两个子计划,分别是RD子计划与SALES子计划。其中RD子计划可使用40%的CPU资源,而这些资源分别给Hand Phone组60%的CPU资源,与Note Book组40%的CPU资源。在SALES子计划部分可使用50%的CPU资源,而这些资源分别给WHOLESALE组50%的CPU资源,与RETAIL组50%的CPU资源。

而数据库资源管理的设置方式,是利用指定的资源比例分配资源给使用者组或是子计划使用,而可管理的资源内容如下。

  • CPU使用时间(CPU Timed):数据库资源管理的CPU资源分配,是利用使用的CPU时间占总CPU时间的百分比来分配给不同的资源使用者组,例如,对于数据仓库的应用,关系型联机分析处理(Relational Online Analytical Processing,ROLAP)的应用所分配到的比例,就应该比批处理作业要高。
  • 活动会话池队列(Active Session Pool With Queuing):数据库资源管理器可根据某个资源使用者组的最大会话数量建立一个运行中的活动会话池(Active Session Pool)。此活动会话池由一群运行中的会话所组成,但对于这些活动会话池有会话数量的限制,当会话池满时,新的会话会被放入等待队列,同时可以对这些等待队列设置等待的时间上限,当时间超过上限时,等待就会停止。
  • 并行度限制(Degree Of Parallelism Limit):可以限制同一组内用户对数据库操作的并行度(Degree Of Parallelism)。
  • 自动转换资源使用者组(Automatic Consumer Group Switching):数据库资源管理器可以在满足特定的条件时,将用户会话转到其他的资源使用者组中。
  • 取消SQL和终止会话(Cancelling SQL and Terminating Sessions):对于一些长时间运行的SQL查询或用户会话,数据库资源管理器可以自动将它终结或是换到其他占用资源比例较低的组中。
  • 预估运行时间限制(ExecutionTime Limit):Oracle优化器(Optimizer)会估算用户会话需求的作业的运行时间,如果超出了特定的值,数据库资源管理器可以阻止此作业的执行。
  • 闲置时间限制(Idle Time Limit):对于一些长时间闲置没有活动的会话,数据库资源管理器可以设置相关的空闲时间上限条件,当有会话满足此条件时,将会自动将此会话切断。

本文节选自《Oracle管理之道》一书,张天慧编著,清华大学出版社出版。

相关 [oracle 数据库 资源] 推荐:

Oracle数据库资源管理

- - 技术改变世界 创新驱动中国 - 《程序员》官网
一般来说,Oracle数据库都属于中大型的系统,这类系统的用户会话(Session),小则一两百,多则上千,这些用户会话要求Oracle数据库执行的任何指令都需要耗费系统资源,而系统资源毕竟是宝贵且有限的,一旦突然涌进大量的用户会话,对于有限的资源可能会略显不足. 但这些会话必定有轻重缓急之分,对于重要且紧急的用户会话需求理当获得多一点的系统资源,对于一些不重要或不紧急的用户会话,则可以使用较少的系统资源慢慢处理.

Oracle 发布 NoSQL 数据库

- 冷月 - 博客园新闻频道
  Oracle 作为全球最大的关系型数据库提供商,在其产品链条中,也加入了 NoSQL 数据库这一环,而且这个新的数据库名字很霸气,就叫 NoSQL Database,想起了当年新浪微博更换 weibo.com 域名之时的一个笑话:. 原来有三家人做面包,张三家的面包叫三张牌面包,李四家的牌子叫李四牌面包,王五家出品的是王五牌面包,而突然有一天,张三家的面包改名了,叫面包牌面包.

Oracle数据库备份

- - Oracle - 数据库 - ITeye博客
(一)、导出/导入(EXPORT/IMPORT).   EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库.   1、EXPORT将数据库中数据备份成一个二进制系统文件称为“导出转储文件”(EXPORT. DUMP FILE),并将重新生成数据库写入文件中.   a.用户模式:导出用户所有对象以及对象中的数据;.

Oracle 数据库导入导出

- - CSDN博客推荐文章
使用 exp/imp 导入导出. 开始exp/imp之前, 有以下几点需要注意:. 1)此部分以 oracle 10g为例. 2)exp, imp 是操作系统下一个可执行的文件,存放在/ORACLE_HOME/bin目录下. 所以之间cmd 命令模式下执行就行了. (不需要先连接进sqlplus).

[Oracle] 数据库安全之 - Vault

- - CSDN博客推荐文章
Oracle用了整整一本书来阐述Valut,有兴趣的童鞋可以参考http://docs.oracle.com/cd/E11882_01/server.112/e23090/toc.htm,我个人觉得并不需要对它进行太深入的了解,只有知道有这么一回事就好了. 从宏观方面看,Vault属于Oracle数据库安全领域中-访问控制的部分,可参考《 [Oracle] 数据安全概述》.

Oracle数据库分析函数详解

- - MySQLOPS 数据库与运维自动化技术分享
Oracle数据库分析函数详解. 原创文章,转载请注明: 文章地址 Oracle数据库分析函数详解.

oracle 数据库体系结构

- - Oracle - 数据库 - ITeye博客
       任何硬件平台或操作系统下的ORACLE体系结构都是相同的,包括如下四个方面:.         数据文件,日志文件,控制文件,参数文件.         表空间、段、区间、数据块.         共享池,数据缓冲区,日志缓冲区,PGA.         用户进程、服务器进程、后台进程.

Oracle数据库日常检查

- - Oracle - 数据库 - ITeye博客
看数据库是否处于归档模式,并启动了自动归档进程. 执行df –k,检查有没有使用率超过80%的文件系统,特别是存放归档日志的文件系统. 检查alert_SID.log有无报错信息(ORA-600、ORA-1578)、ORA-60. 用imp工具生成建表脚本,看能否正常完成. 如果最大可用块(max_chunk)与总大小(total_space)相比太小,要考虑接合表空间碎片或重建某些数据库对象.

数据批量导入Oracle数据库

- - Oracle - 数据库 - ITeye博客
今天学习了一个新的东西,觉得还挺有意思的,也是从别出COPY 的,. SQL*LOADER是大型数据. 仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL). 现在,我们抛开其理论不谈,用实例来使. 您快速掌握SQL*LOADER的使用方法.   首先,我们认识一下SQL*LOADER.

用SQL语言管理Oracle数据库

- - CSDN博客推荐文章
1,查看数据库的基本属性:. SELECT dbid 数据库编号,name 数据库名称,db_unique_name 全局名称,created 创建时间,log_mode 归档方式,open_mode 访问方式,platform_name 版本类型 FROM v$database;. 2,查看所有数据库对象的类别和大小:.