热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Oracle资源管理——对用户、程序、服务自定义资源分配

“ManagingResources◇Resourceconsumergro

Managing Resources

Resource consumer group 相似资源需求的用户、程序、服务归为一个组

Resource plan 资源计划,指定是哪一活动

Resource plan directives 规定如何分配资源

可以管理的资源:

CPU usage     --CPU使用率

Degree of parallelism    --并行度

Number of active sessions    --活动会话数

Undo generation    --撤销空间

Operation execution time    --执行时间

Idle time    --空闲时间

Database consolidation    --数据库整合

Server consolidation    --服务整合

1

资源计划resource_manager_plan参数

SQL> show parameter resource

NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

resource_limit     boolean TRUE

resource_manager_cpu_allocation      integer 1

resource_manager_plan     string SCHEDULER[0x3006]:DEFAULT_MAIN

TENANCE_PLAN

#设置resource_manager_plan为DEFAULT_PLAN

SQL> alter system set resource_manager_plan = 'DEFAULT_PLAN';

System altered.

SQL> show parameter resource

NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

resource_limit     boolean TRUE

resource_manager_cpu_allocation      integer 1

resource_manager_plan     string DEFAULT_PLAN

如果未设置resource_manager_plan的值,则不在实例中执行资源管理。

2

新建资源计划

可以使用PL/SQL包“DBMS_RESOURCE_MANAGER”的CREATE_PLAN、UPDATE_PLAN和DELETE_PLAN来创建、更新和删除资源计划。

#为资源管理器计划创建等待区(必须创建)

SQL>  exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

PL/SQL procedure successfully completed.

#新建资源计划,名称DEVELOPERS

SQL> execute DBMS_RESOURCE_MANAGER.CREATE_PLAN -

> (Plan => 'DEVELOPERS', -

> Comment => 'Developers, in Development database');

PL/SQL procedure successfully completed.

3

创建使用者组

#新建两个使用者组:ONLINE_DEVELOPERS和BATCH_DEVELOPERS

新建使用者组ONLINE_DEVELOPERS

SQL> exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -

> (Consumer_Group => 'ONLINE_DEVELOPERS', -

> Comment => 'Online developers');

PL/SQL procedure successfully completed.

新建使用者组BATCH_DEVELOPERS

SQL> exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -

> (Consumer_Group => 'BATCH_DEVELOPERS', -

> Comment => 'Batch developers');

PL/SQL procedure successfully completed.

4

资源分配方法

创建两个计划指导,以便将75%的CPU资源分配给ONLINE_DEVELOPERS组,25%的CPU资源分配给BATCH_DEVELOPERS组。
另外,将ONLINE_DEVELOPERS组并行性限制为12,将BATCH_DEVELOPERS组的并行性限制为6。

ONLINE_DEVELOPERS资源分配

SQL> exec dbms_resource_manager.create_plan_directive -

> (Plan => 'DEVELOPERS', -

> Group_or_subplan => 'ONLINE_DEVELOPERS', -

> Comment => 'Online developers', -

> Cpu_p1 => 75, -

> Cpu_p2 => 0, -

> Parallel_degree_limit_p1 => 12);

PL/SQL procedure successfully completed.

BATCH_DEVELOPERS资源分配

SQL> exec dbms_resource_manager.create_plan_directive -

> (Plan => 'DEVELOPERS', -

> Group_or_subplan => 'BATCH_DEVELOPERS', -

> Comment => 'Batch developers', -

> Cpu_p1 => 25, -

> Cpu_p2 => 0, -

> Parallel_degree_limit_p1 => 6);

PL/SQL procedure successfully completed.

OTHER_GROUPS(计划中必须包含此组)

SQL> exec dbms_resource_manager.create_plan_directive -

> (Plan => 'DEVELOPERS', -

> Group_or_subplan => 'OTHER_GROUPS', -

> Comment => 'Everyone else', -

> Cpu_p1 => 0, -

> Cpu_p2 => 100, -

> Parallel_degree_limit_p1 => 6);

PL/SQL procedure successfully completed.

验证是否有效

SQL> exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA()

PL/SQL procedure successfully completed.

提交更改

SQL> exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

PL/SQL procedure successfully completed.

清除更改

exec DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();

5

分配使用者组

将用户分配到使用者组

赋予SCOTT切换到ONLINE_DEVELOPERS使用者组权限

SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group -

> (grantee_name=>'SCOTT', -

> consumer_group=>'ONLINE_DEVELOPERS', -

> grant_option=>true);

PL/SQL procedure successfully completed.

将SCOTT分配到ONLINE_DEVELOPERS使用者组

SQL> exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP -

> ('scott','ONLINE_DEVELOPERS');

PL/SQL procedure successfully completed.

赋予用户administer_resource_manager权限

SQL> begin

  2  dbms_resource_manager_privs.grant_system_privilege(

  3  grantee_name=>'SCOTT',

  4  privilege_name=>'administer_resource_manager',

  5  admin_option=>true);

  6  end;

  7  /

PL/SQL procedure successfully completed.

6

激活资源计划

SQL> alter system set resource_manager_plan = 'DEVELOPERS';

System altered.

7

Resource Manager视图

DBA_RSRC_PLANS                  --> 资源计划和每个计划的状态

DBA_RSRC_PLAN_DIRECTIVES        --> 资源计划指导

DBA_RSRC_CONSUMER_GROUPS        --> 资源计划使用者组

DBA_RSRC_CONSUMER_GROUP_PRIVS   --> 使用者组用户和角色分配

DBA_RSRC_GROUP_MAPPINGS         --> 会话属性与使用者组之间的使用者组映射

DBA_RSRC_MAPPING_PRIORITY       --> 资源映射优先级

DBA_USERS                       --> INITIAL_RSRC_CONSUMER_GROUP列包含用户的初始化使用者

DBA_RSRC_MANAGER_SYSTEM_PRIVS   --> 被授予

DBMS_RESOURCE_MANAGER包上的权限的用户

查看每个计划的状态和特点:

SQL> set linesize 120

SQL> col plan for a30

SQL> col status for a30

SQL> select plan, status, num_plan_directives, mandatory from dba_rsrc_plans;

PLAN       STATUS      NUM_PLAN_DIRECTIVES MAN

------------------------------ ------------------------------ ------------------- ---

DEFAULT_PLAN 4 YES

INTERNAL_QUIESCE 2 YES

DEVELOPERS 3 NO

INTERNAL_PLAN 1 YES

APPQOS_PLAN 7 YES

DEFAULT_MAINTENANCE_PLAN 4 YES

ETL_CRITICAL_PLAN 8 NO

MIXED_WORKLOAD_PLAN 6 NO

ORA$AUTOTASK_SUB_PLAN 3 YES

ORA$AUTOTASK_HIGH_SUB_PLAN 4 YES

DSS_PLAN 8 NO

11 rows selected.

status列值为PENDING说明计划尚未经过验证并成功提交;

mandatory列值为YES说明无法删除计划。

8

监控Resource Manager

下面3个动态性能视图显示Resource Manager的统计信息:

v$rsrc_consumer_group   -> 按使用者组列出的CPU使用率 

v$sysstat               -> 所有会话的CPU使用率 

v$sesstat               -> 按会话列出的CPU使用率

还可以通过EM的Resource Manager下statistics连接查询CPU、I/O、等待时间和排队会话的明细。

9

验证Resource Manager

SQL> select  SID,SERIAL#   ,USERNAME,RESOURCE_CONSUMER_GROUP  from v$session  where username = 'SCOTT';

no rows selected

用scott 执行很耗费CPU的语句

SQL> conn scott/oracle

SQL> select count(*) from all_objects a , all_objects b , all_objects c group by a.object_id;

SQL> select  SID,SERIAL#   ,USERNAME,RESOURCE_CONSUMER_GROUP  from v$session  where username = 'SCOTT';

       SID    SERIAL# USERNAME

---------- ---------- ------------------------------

RESOURCE_CONSUMER_GROUP

--------------------------------

35 9261 SCOTT

ONLINE_DEVELOPERS

57 4723 SCOTT

_ORACLE_BACKGROUND_GROUP_

60 8117 SCOTT

_ORACLE_BACKGROUND_GROUP_



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
author-avatar
向陽阿莫_545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有