滚雪球学Oracle[5.6讲]:资源管理与调优

全文目录:

    • 前言
    • 一、Oracle Resource Manager的配置与使用
      • 1.1 什么是Oracle Resource Manager
      • 1.2 Oracle Resource Manager的优势
      • 1.3 配置Oracle Resource Manager
        • 案例演示:配置Resource Manager
    • 二、基于服务的资源分配策略
      • 2.1 基于服务的资源管理
        • 典型场景
      • 2.2 基于服务的资源计划配置
        • 案例演示:为服务配置资源计划
    • 三、多租户环境中的资源管理
      • 3.1 什么是多租户架构
      • 3.2 多租户环境中的资源管理挑战
      • 3.3 多租户环境中的Resource Manager配置
        • 案例演示:为多租户环境中的PDB分配资源
    • 结语

前言

在上期内容中,我们详细探讨了日志与故障排查,介绍了如何通过分析数据库日志来解决故障问题,提升系统的稳定性和可维护性。通过日志管理,数据库管理员(DBA)可以追踪系统运行中的各种异常并快速响应,从而保障数据库的持续可用性。

本期,我们将转向资源管理与调优的主题。在复杂的数据库环境中,不同应用和用户可能同时访问数据库,导致资源竞争和性能下降。为了解决这一问题,Oracle提供了Resource Manager,它可以帮助DBA根据不同的工作负载和业务需求,分配和优化系统资源,确保资源得到高效利用。本文将重点介绍如何配置和使用Oracle Resource Manager,基于服务的资源分配策略,以及如何在多租户环境中进行资源管理与调优。

在文章的最后,我们将预告下期内容——Oracle RAC技术概述

一、Oracle Resource Manager的配置与使用

1.1 什么是Oracle Resource Manager

Oracle Resource Manager是Oracle数据库中的一项强大工具,旨在管理和控制数据库的CPU、I/O、并发会话等资源分配。通过Resource Manager,DBA可以定义不同的资源计划(Resource Plan),为不同的工作负载分配特定比例的资源,从而确保关键任务优先获得足够的资源。

1.2 Oracle Resource Manager的优势

  • 资源控制:根据业务优先级为不同用户或应用分配CPU、I/O等资源,避免资源争夺。
  • 工作负载隔离:将低优先级任务限制在特定资源范围内,确保高优先级任务的稳定性。
  • 性能优化:通过优化资源利用率,提高系统整体性能。
  • 限制长时间运行的查询:自动终止超过时间限制的查询,防止长时间的资源占用。

1.3 配置Oracle Resource Manager

Oracle Resource Manager的配置主要包括创建资源消费者组(Consumer Group)、定义资源计划和分配资源计划指令

案例演示:配置Resource Manager

以下示例展示了如何为不同的用户组配置资源管理策略,以控制CPU使用情况。

  1. 创建资源消费者组

首先,创建两个资源消费者组,一个用于高优先级用户,另一个用于低优先级用户:

BEGINDBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'high_priority_users',COMMENT => 'Group for high priority users');DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'low_priority_users',COMMENT => 'Group for low priority users');
END;
/
  1. 创建资源计划

接下来,创建一个资源计划,为不同的用户组分配CPU资源。此示例为高优先级用户分配80%的CPU,为低优先级用户分配20%的CPU:

BEGINDBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'cpu_allocation_plan',COMMENT => 'CPU allocation for high and low priority users');DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'cpu_allocation_plan',GROUP_OR_SUBPLAN => 'high_priority_users',COMMENT => '80% CPU for high priority users',MGMT_P1 => 80);DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'cpu_allocation_plan',GROUP_OR_SUBPLAN => 'low_priority_users',COMMENT => '20% CPU for low priority users',MGMT_P1 => 20);
END;
/
  1. 激活资源计划

配置完成后,需要激活资源计划,使其生效:

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'cpu_allocation_plan';

通过上述步骤,Oracle Resource Manager根据不同的用户组分配CPU资源,从而避免资源争夺,确保关键任务优先获得足够的系统资源。

二、基于服务的资源分配策略

2.1 基于服务的资源管理

Oracle中的**服务(Service)**是数据库为不同工作负载定义的逻辑分组。基于服务的资源管理允许DBA根据不同的应用或工作负载,为其分配特定的资源配额。这种方式可以灵活管理不同业务场景的资源需求,提高整体系统效率。

典型场景
  • OLTP服务与OLAP服务的资源隔离:通过为在线事务处理(OLTP)服务和在线分析处理(OLAP)服务分配不同的资源,保证两者互不干扰。
  • 批处理任务的限制:限制批处理任务的资源消耗,避免其影响实时业务的响应时间。

2.2 基于服务的资源计划配置

Oracle Resource Manager允许将资源计划与服务绑定,以确保不同服务的工作负载可以获得适当的资源配额。

案例演示:为服务配置资源计划
  1. 创建服务

首先为OLTP和OLAP任务创建两个服务:

EXEC DBMS_SERVICE.CREATE_SERVICE('oltp_service', 'OLTP Workload Service');
EXEC DBMS_SERVICE.CREATE_SERVICE('olap_service', 'OLAP Workload Service');
  1. 将服务与消费者组绑定

然后将这些服务分配到不同的资源消费者组:

BEGINDBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'cpu_allocation_plan',GROUP_OR_SUBPLAN => 'oltp_service',COMMENT => '70% CPU for OLTP',MGMT_P1 => 70);DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'cpu_allocation_plan',GROUP_OR_SUBPLAN => 'olap_service',COMMENT => '30% CPU for OLAP',MGMT_P1 => 30);
END;
/
  1. 激活服务和资源计划

启动服务并激活资源计划:

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'cpu_allocation_plan';EXEC DBMS_SERVICE.START_SERVICE('oltp_service');
EXEC DBMS_SERVICE.START_SERVICE('olap_service');

通过这种基于服务的资源管理策略,DBA可以确保不同类型的工作负载(如OLTP与OLAP)在同一系统中得到合理分配的资源,避免彼此干扰。

三、多租户环境中的资源管理

3.1 什么是多租户架构

Oracle的多租户架构(Multitenant Architecture)允许在一个单一的容器数据库(CDB)中托管多个独立的插接式数据库(PDB)。每个PDB相当于独立的数据库实例,但它们共享CDB的硬件资源,如CPU、内存和I/O。

在多租户环境中,资源的竞争可能更加激烈,因此,如何合理分配和管理PDB之间的资源成为关键问题。

3.2 多租户环境中的资源管理挑战

在多租户环境中,常见的资源管理挑战包括:

  • 不同PDB的资源竞争:多个PDB可能同时进行高强度的操作,导致资源争夺。
  • 资源隔离:如何确保关键PDB优先获得资源,而不会因其他PDB的消耗导致性能下降。

3.3 多租户环境中的Resource Manager配置

Oracle多租户架构下,Resource Manager允许DBA为每个PDB分配特定的资源比例,确保资源的公平和合理使用。

案例演示:为多租户环境中的PDB分配资源
  1. 配置CDB级别的资源管理计划

首先,在CDB级别为不同PDB分配资源:

BEGINDBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(PLAN => 'pdb_resource_plan',COMMENT => 'Resource allocation for PDBs');DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(PLAN => 'pdb_resource_plan',PDB => 'PDB1',COMMENT => '60% resources for PDB1',SHARES => 60);DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(PLAN => 'pdb_resource_plan',PDB => 'PDB2',COMMENT => '40% resources for PDB2',SHARES => 40);
END;
/
  1. 激活CDB资源管理计划

激活多租户环境下的资源管理计划:

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'pdb_resource_plan';

通过这种方式,DBA可以为每个PDB定义合理的资源分配策略,确保不同租户的应用之间的资源不会相互争夺。

结语

本期内容详细讲解了资源管理与调优,涵盖了Oracle Resource Manager的配置与使用、基于服务的资源分配策略以及在多租户环境中的资源管理方法。通过合理配置资源计划,DBA可以确保系统资源被合理、高效地利用,避免性能下降和资源浪费。

在下期内容中,我们将探讨Oracle RAC技术概述,揭示如何

通过RAC(Real Application Clusters)实现数据库的高可用性和可扩展性。敬请期待!

参考文献:

  • Oracle Resource Manager官方文档
  • 多租户架构与资源管理最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555217.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【RISCV指令集手册】向量扩展v1.0

概述 从rvv 0.9说起 此前写过向量扩展0.9的阅读记录,三年已过,本以为不再参与RVV的相关开发,奈何造化弄人,旧业重操,真就世事难料呀。 总的来说1.0版本相比0.9版本的扩充了较多内容,但大部分为指令功能的…

YOLOv8改进线性注意力模块 ICCV2023 FLatten Transformer

1,原理部分 论文地址:2308.00442 (arxiv.org) 在将 Transformer 模型应用于视觉任务时,自我注意的二次计算复杂性一直是一个持续的挑战。另一方面,线性注意力通过精心设计的映射函数近似 Softmax 操作,通过其线性复杂性提供了一种更有效的替代方案。然而,当前的线性注意…

使用LlamaIndex构建RAG

使用LlamaIndex构建RAG 一、什么是LlamaIndex二、环境准备2.1虚拟环境创建及基础安装2.2安装llamaIndex相关2.3下载词向量模型2.4下载NLTK资源2.5准备LLM模型2.6不使用RAG情况下的问答效果2.7使用llama-index的效果2.7.1安装llama-index词嵌入依赖2.7.2获取知识库2.7.3准备代码…

信号检测理论(Signal Detection Theory, SDT)

信号检测理论(Signal Detection Theory, SDT)模拟是一种实验设计,用于研究和理解在存在噪声或不确定性的情况下如何做出决策。在心理学、认知科学、工程学和许多其他领域,信号检测理论都非常重要。 一、基础概念: 在信…

TIBCO Jaspersoft Studio 创建数据源并进行测试

1、连接数据源: 右键Data Adapters ,然后新建 根自己的情况,进行创建,这里测试用的是excel表格。 2、新建Jasper Report,然后我们选择刚刚创建的数据源 这样report就建好了,然后我们进行测试。 3、先把不…

【源码+文档】基于SpringBoot+Vue的酒店管理系统

🚩如何选题? 如何选题、让题目的难度在可控范围,以及如何在选题过程以及整个毕设过程中如何与老师沟通,这些问题是需要大家在选题前需要考虑的,具体的方法我会在文末详细为你解答。 🚭如何快速熟悉一个项目…

文心智能体——制作你的专属AI

随着社会的进步和互联网技术的发展,人工智能领域正蓬勃发展。最近几年关于人工智能的新闻日渐增多并且成为了当代最大的热点,所有的领域都在引进AI、训练AI、使用AI,AI正逐步融入人们的生活。从前几年chatGPT大语言模型的横空出世&#xff0c…

Finops成本优化企业实践-可视化篇

引言:上一章讨论了finops的一些方法论,笔者在拿到finops官方认证finops-engineer certificate之后,将方法论运用到所在项目组中,并于今年完成了40%的费用节省。在此将这些实践方法总结沉淀,与大家分享。实践包括三篇&a…

[Python学习日记-38] Python 中的函数的名称空间

[Python学习日记-38] Python 中的函数的名称空间 简介 名称空间 作用域查找顺序 简介 在前面学习函数的时候我们发现,函数内部也有一个内存空间是用于存储函数自己的一些变量的,及时这个变量名与外部的变量名一样是也没关系,Python 会优先…

SpringCloud Alibaba - Eureka注册中心,Nacos配置中心

Eureka 1、创建服务端 server:port: 8761 # eureka 默认端口spring:application:name: eureka-server # 应用名称(微服务中建议必须定义应用名称) SpringBootApplication EnableEurekaServer // 开启eureka注册中心功能 public class EurekaServerAppli…

数据驱动投资:AI在股票市场的应用

当ChatGPT首次亮相时,其卓越的语言处理能力立刻引起了许多行业的广泛关注,投资界也不例外。关于ChatGPT是否能应用于投资决策的问题,迅速成为热门讨论的焦点。 近期,加拿大多伦多大学和印度孟买理工学院的研究人员联合开展了一项…

《Linux从小白到高手》理论篇:Linux的进程管理详解

本篇将介绍Linux的进程管理相关知识,并将深入介绍Linux的进程间相互通信。 进程就是运行中的程序,一个运行着的程序,可能有多个进程。 比如Oracle DB,启动Oracle实例服务后,就会有多个进程。 Linux进程分类 在 Linux…

python实战四:输入一个年份,判断是否是闰年

问题: 从键盘获取一个四位的整数年份,判断其是否是闰年。闰年的判断条件为︰能被4整除但不能被100整除,或者能被400整除。 需求方法: 使用 input() 函数从键盘获取输入。输入的年份是一个字符串。检查输入是否为四位数&#xf…

优优嗨聚集团:债务纠纷下的个人财务困境揭秘

在当今社会,随着经济活动的日益频繁与复杂化,债务问题已成为许多人生活中难以回避的挑战之一。债务纠纷,作为这一问题的直接体现,不仅关乎金钱的得失,更深刻地影响着个人的生活方方面面,从心理健康、家庭关…

vscode 连接云服务器(ubantu 20.04)

更改服务器系统 如果云服务器上的系统不是ubantu20.04的,可以进行更改: 登录云服务官网(这里以阿里云为例)点击控制台 点击服务器实例 点击更多操作、重置系统 点击重置为其他镜像、系统镜像:选择你要使用的系统镜像…

c++ union内存布局

// // Created by 徐昌真 on 2024/10/5. // #include <iostream> using namespace std;//定义一个union union Data{int a;char s[7]; //char值的范围(-128~127) }; int main() {//创建一个unionData d;d.s[0] 255; //16进制 0xFF 16进制F对应二进制 1111d.s[1] 1; …

瓶颈ing

全排列的回溯算法怎么好理解记忆啊&#xff0c;对着解析理解顺着逻辑也能够推&#xff0c;但是自己写无从下手呜呜呜

探索基于基于人工智能进行的漏洞评估的前景

根据2023年的一份报告 网络安全企业据估计&#xff0c;到 10.5 年&#xff0c;网络犯罪每年将给世界造成 2025 万亿美元的损失。每年记录在案的网络犯罪数量都会创下新高。这要求对传统的安全测试流程进行重大改变。这就是漏洞评估发挥作用的地方。 漏洞评估对于识别系统中的弱…

zookeeper选举kafka集群的controller

zookeeper选举kafka集群的controller目录 文章目录 zookeeper选举kafka集群的controller目录前言一、实操体验controller的选举二、模拟controller选举四、删除controller节点 前言 kafka集群的controller是kafka集群中一个有特殊作用的broker&#xff0c;负责整个kafka集群的…

[python]Flask_Login

flask_login是flask框架中的一个拓展功能&#xff0c;用于更快捷的实现用户会话管理功能&#xff0c;主要处理登录&#xff0c;注销和长时间会话存储的功能处理。 目录 安装 使用 第一步,配置SECRET_KEY 第二步,创建LoginManager实例绑定app 第三步,用户类继承UserMixin …