当前位置: 首页 > news >正文

图文深入介绍oracle资源管理(续)

1. 引言:

本文将承接上篇继续深入介绍oracle资源管理。本文重点介绍如何使用oracle资源管理器管理好DB。

2. 资源管理器:

可以使用图形界面 OEM$或命令行调用 DBMS RESOURCE MANAGER 程序包的过程进行数据库资源管理。
调用资源管理器的先决条件:要具有的权限,包括 ADMINISTER RESOURCE MANAGER 系统权限,以及程序包 DBMS RESOURCE MANAGER、DBMS RESOURCE MANAGER PRIVS 的执行权限。

3. 资源管理器分配资源的方式:

  1. CPU 使用率:可以指定在使用者组和子计划之间如何分配 CPU 资源。
  2. 并行度限制:可以控制使用者组中任何操作的最大并行度。
  3. 设置活动会话池,可以限制使用者组或子计划的并发活动会话数。如果某个组的会话数超过了允许的最大值,则新的会话将加入队列等待,还能指定时间限制,超限制会话将退出并返回错误。
  4. 设置 Undo 池,限制 UNDO 空间使用:可以控制使用者组或子计划能够生成的 UNDO 操作占用空间总量。当 UNDO 空间总数超过UNDO_POOL指定的数量时,在同组中其他会话释放UNDO 空间或者增大使用者组的UNDO 限额前,不允许执行任何新的 INSERT、UPDATE 或 DELETE 命令。若使用者组执行 DML 语句超限额,将中止操作并返回错误,此时仍可查询。
  5. 执行时间限制,可指定操作允许的最大执行时间。Oracle DB 使用基于成本的优化程序统计信息估计操作所需时间,如果耗时超过了所允许的最大时间(MAX_EST_EXEC_TIME),则操作返回错误并且不会启动。
    6.空闲时间限制:可以指定会话的空闲时间(MAX_IDLE_TIME),超过改时间后将终止会话。还可以进一步设置MAX_IDLE_TIME_BLOCKER,只终止阻止了其它会话的空闲会话。
    7.使用者组切换:初始使用者组是在会话刚登录时所属的组。顶层调用是指调用整个PL/SQL块的调用,客户机单独发出的SQL语句视为单独调用。在使用中间层服务器实施会话共享的三层应用模型中,中间层在为某个最终用户完成执行一个调用后,可使用相同的会话为另一个最终用户执行调用。因此,用户作业的分界线为每个调用,可以创建计划指令,控制切换调用的使用者组,调配使用的系统资源。
    8.数据库合并:使用资源管理器,可以优化资源在并发数据库会话之间的分配。数据库合并要求应用程序之间彼此孤立。当一个应用程序的工作量增加时,这种增加不应影响其他应用程序。
    9.服务器合并:可以通过在服务器上运行多个数据库实例来更充分地利用资源。在运行多个数据库实例的多CPU服务器上管理CPU分配的方法叫做“实例限制”(instance caging)。下图是默认的资源计划:
    在这里插入图片描述
    DEFAULT PLAN 是内置的默认资源计划之一,可用作新计划的模板,它包含下列使用者组:
    –SYS_GROUP:SYS 和 SYSTEM 用户的初始使用者组。
    –OTHER GROUPS:用于在资源计划之外的所有使用者组的会话。任何活动计划中都必须包含对 OTHER GROUPS 的计划指令。
    –ORA A U T O T A S K S U B P L A N :在此计划中优先级低于 S Y S G R O U P 和 O T H E R G R O U P S − − O R A AUTOTASK SUB PLAN:在此计划中优先级低于 SYS GROUP 和 OTHER GROUPS --ORA AUTOTASKSUBPLAN:在此计划中优先级低于SYSGROUPOTHERGROUPSORADIAGNOSTICS:在此计划中优先级与 ORA A U T O T A S K S U B P L A N 。 O R A AUTOTASK SUB PLAN 。 ORA AUTOTASKSUBPLANORA组的优先级低可防止自动维护工作消耗过多的系统资源。
    –用户的初始使用者组是该用户创建的任何会话最初所属的使用者组。如果没有为用户设置初始使用者组,则 DEFAULT CONSUMER GROUP 将自动成为用户的初始使用者组。

4. Oracle DB资源管理工作流程

Oracle DB资源管理工作流程前一篇博文已经有所介绍,本篇在完善下。Oracle DB 资源管理的工作流程主要包括以下几个步骤:

  1. 规划与设计
    确定业务需求:首先,需要了解企业的业务需求和数据库使用模式。确定哪些用户、应用程序或作业需要特殊的资源分配,以及不同业务的优先级和重要性。
    定义资源消费者组:根据业务需求,创建不同的资源消费者组。每个资源消费者组代表一类具有相似资源需求的用户或作业。例如,可以创建高优先级用户组、普通用户组和后台作业组等。
    设计资源计划:设计资源计划,确定如何将系统资源分配给不同的资源消费者组。资源计划可以包括多个层级,每个层级可以包含不同的资源分配策略和限制。
  2. 配置资源管理
    创建资源消费者组:使用 Oracle Enterprise Manager 或 SQL 语句创建资源消费者组。可以为每个资源消费者组指定名称、描述和成员资格条件。
    配置资源计划:使用 Oracle Enterprise Manager 或 SQL 语句配置资源计划。可以为资源计划指定名称、描述和资源分配策略。可以设置不同资源(如 CPU、内存、I/O 等)的分配比例、绝对限制或优先级。
    分配资源消费者组到资源计划:将资源消费者组分配到资源计划中的特定层级。可以根据业务需求和优先级,将不同的资源消费者组分配到不同的资源分配策略中。
    设置指令和谓词:可以设置指令和谓词来进一步控制资源分配。指令可以指定在特定条件下如何分配资源,而谓词可以根据用户、会话或作业的属性将其分配到特定的资源消费者组。
  3. 运行时资源管理
    用户连接和会话启动:当用户连接到数据库时,Oracle 根据用户的属性和资源消费者组的成员资格条件,将用户的会话分配到相应的资源消费者组。
    资源请求和分配:当用户的会话执行 SQL 语句或其他数据库操作时,Oracle 根据资源计划和资源消费者组的配置,为该会话分配相应的资源。例如,如果用户属于高优先级资源消费者组,那么在资源竞争时,该用户的会话将获得更多的 CPU 时间和内存资源。
    资源监控和调整:Oracle 会持续监控系统资源的使用情况和负载情况。如果发现资源分配不合理或系统负载过高,可以通过调整资源计划、资源消费者组的配置或添加新的资源来优化资源管理。可以使用 Oracle Enterprise Manager 或 SQL 语句进行实时监控和调整。
  4. 审计和报告
    资源使用审计:Oracle 可以记录资源的使用情况,包括每个资源消费者组的资源使用量、每个会话的资源使用情况以及资源分配的历史记录。可以使用 Oracle Enterprise Manager 或 SQL 语句查询和分析这些审计信息,以了解资源的使用情况和优化资源管理。
    性能报告:Oracle 可以生成性能报告,显示系统资源的使用情况、负载情况以及资源管理的效果。可以使用 Oracle Enterprise Manager 或 SQL 语句生成这些报告,以帮助管理员评估资源管理的性能和效果,并进行进一步的优化。

5.资源分配常用参数

  1. 资源分配常用参数主要核心参数有以下几个:
    在这里插入图片描述
  2. EMPHASIS和RATIO的比较:
    在这里插入图片描述
    “EMPHASIS”(强调)和 “RATIO”(比例)是两种不同的资源分配方式,两者的区别在于:
  3. 定义与概念
    EMPHASIS:
    EMPHASIS 是一种资源分配方式,它通过为不同的资源消费者组设置不同的强调级别来分配资源。强调级别可以是 LOW、MEDIUM 或 HIGH。
    例如,一个资源计划中可以将某些关键任务的资源消费者组设置为 HIGH EMPHASIS,以确保在资源竞争时这些组能够获得更多的资源。
    RATIO:
    RATIO 是通过为不同的资源消费者组分配特定的资源比例来进行资源分配。比例可以是整数或小数,表示该组在总资源中所占的份额。例如,一个资源计划中可以将资源分配为三个组,比例分别为 50:30:20,表示第一个组获得 50% 的资源,第二个组获得 30% 的资源,第三个组获得 20% 的资源。
  4. 资源分配方式
    EMPHASIS:
    强调级别决定了资源分配的优先级。高强调级别的组在资源竞争时更有可能获得更多的资源,但并不保证具体的资源数量。
    它更适用于对某些关键任务或高优先级任务进行灵活的资源分配,以确保在紧急情况下这些任务能够得到更多的资源支持。
    RATIO:
    比例分配方式明确规定了每个资源消费者组能够获得的资源份额。这种方式更加固定和可预测,能够确保每个组在不同的负载情况下都能获得相对稳定的资源量。适用于需要明确资源分配比例的场景,例如不同部门或业务线之间的资源分配。
  5. 灵活性与可预测性
    EMPHASIS:
    灵活性较高。在不同的负载情况下,资源的分配可以根据强调级别动态调整,以适应变化的需求。但是,由于强调级别不直接对应具体的资源数量,因此资源分配的结果可能不太容易预测。
    RATIO:
    可预测性较高。资源分配比例是固定的,因此在不同的负载情况下,每个组能够获得的资源量相对稳定,可以更好地进行资源规划和预测。但是,灵活性相对较低,在面对突发情况或特殊需求时,可能需要手动调整资源比例。
  6. 管理与维护
    EMPHASIS:
    管理相对复杂。需要根据业务需求和优先级不断调整强调级别,以确保资源分配的合理性。同时,由于强调级别不直接对应具体的资源数量,可能需要进行更多的监控和调整。
    RATIO:
    管理相对简单。一旦确定了资源分配比例,就可以相对稳定地进行资源管理。但是,在业务需求发生变化时,可能需要重新评估和调整资源比例。

本篇结束,其实涉及到oracle资源管理的内容还是挺多的,尤其是实际操作实践,大家可以多做实验,有问题咱们共同探讨。

6. Oracle DB资源管理相关的视图

在这里插入图片描述

  1. DBA_RSRC_PLANS
    这个视图显示了数据库中的资源计划以及它们的当前状态。资源计划定义了如何在不同的资源消费者组之间分配系统资源。通过这个视图,可以查看资源计划的名称、状态、注释等信息,帮助管理员了解当前系统中资源分配的策略。
  2. DBA_RSRC_PLAN_DIRECTIVES
    该视图展示了资源计划中的指令。指令用于进一步细化资源分配规则,例如可以指定特定资源消费者组在特定条件下的资源分配方式。可以查看指令所关联的资源计划、资源消费者组、资源分配方式等详细信息。
  3. DBA_RSRC_CONSUMER_GROUPS
    此视图列出了数据库中的资源消费者组。资源消费者组是一组具有相似资源需求的用户或会话。可以查看资源消费者组的名称、注释、状态等信息,帮助管理员了解系统中不同资源消费者组的定义和用途。
  4. DBA_RSRC_CONSUMER_GROUP_PRIVS
    这个视图显示了用户或角色对资源消费者组的权限。可以查看哪些用户或角色被授予了对特定资源消费者组的访问权限,以及这些权限的类型(例如,SELECT、INSERT 等)。帮助管理员管理资源消费者组的权限分配,确保只有授权的用户或角色能够访问特定的资源消费者组。
  5. DBA_RSRC_GROUP_MAPPINGS
    该视图展示了资源消费者组的映射关系。可以查看哪些用户、会话或其他实体被映射到特定的资源消费者组。帮助管理员了解资源消费者组的成员构成,以便更好地管理资源分配。
  6. DBA_RSRC_MAPPING_PRIORITY
    此视图显示了资源映射的优先级。在多个映射规则存在的情况下,优先级决定了哪个映射规则将被优先应用。可以查看不同映射的优先级值,帮助管理员调整资源映射的顺序,以满足特定的业务需求。
  7. DBA_USERS 中的 initial_rsrc_consumer_group 列
    在 DBA_USERS 视图中,initial_rsrc_consumer_group 列指定了用户在创建会话时默认所属的资源消费者组。管理员可以通过设置这个列的值,为不同的用户分配不同的资源消费者组,从而实现基于用户的资源管理。
  8. DBA_RSRC_MANAGER_SYSTEM_PRIVS
    这个视图显示了用户或角色对资源管理器的系统权限。可以查看哪些用户或角色被授予了管理资源的权限,例如创建资源计划、修改资源消费者组等。帮助管理员管理资源管理器的权限分配,确保只有授权的用户或角色能够进行资源管理操作。

码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB核心知识和排障案例及经验、性能调优等。


http://www.mrgr.cn/news/54881.html

相关文章:

  • 机器学习方向在算法优化上有哪些创新点?
  • STM32软件模拟I2C的实现方式(一)
  • OpenSEMBA :一个用于电磁场模拟的开源软件框架
  • iOS IPA上传到App Store Connect的三种方案详解
  • filebeat接入nginx和mysql获取日志
  • lazyLoad
  • 10.20学习
  • Linux基本指令一眼看懂(简洁表示)
  • C语言实践中的补充知识 Ⅱ
  • 【AIGC视频生成】视频扩散模型(综述+最新进展)
  • Python第五节 迷宫王国的奇幻旅程
  • TypeScript中 interface接口 type关键字 enum枚举类型
  • Guava防击穿回源-异步防击穿
  • nginx的配置
  • 电子政务的类型
  • SHELL函数之的使用
  • 【论文翻译】ICLR 2018 | DCRNN:扩散卷积递归神经网络:数据驱动的交通预测
  • Python练习3
  • 空间复杂度
  • Java程序OutOfMemoryError分析与heap dump
  • Chromium127编译指南 Windows篇 - depot_tools工具的安装与设置(二)
  • 三种容器 std::vector、std::map、std::unordered_set 的对比分析
  • 【热门主题】000004 案例 Vue.js组件开发
  • C++算法练习-day11——242.有效的字母异位词
  • CSS网页布局(重塑网页布局)
  • (A-D)AtCoder Beginner Contest 376