图文深入介绍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:在此计划中优先级低于SYSGROUP和OTHERGROUPS−−ORADIAGNOSTICS:在此计划中优先级与 ORA A U T O T A S K S U B P L A N 。 O R A AUTOTASK SUB PLAN 。 ORA AUTOTASKSUBPLAN。ORA组的优先级低可防止自动维护工作消耗过多的系统资源。
    --用户的初始使用者组是该用户创建的任何会话最初所属的使用者组。如果没有为用户设置初始使用者组,则 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核心知识和排障案例及经验、性能调优等。

相关推荐
为思念酝酿的痛1 天前
POSIX信号量
linux·运维·服务器·后端
专业白嫖怪1 天前
什么是docker
运维·docker·容器
ccddsdsdfsdf1 天前
DBeaver怎么链接mongoDB
数据库·mongodb
隔窗听雨眠1 天前
Nginx网关响应慢排查手记
java·服务器·nginx
丷丩1 天前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空991 天前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
人还是要有梦想的1 天前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通1 天前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops1 天前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush41 天前
嵌入式linux学习记录二
linux·运维·学习