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

滚雪球学Oracle[1.3讲]:内存与进程架构

全文目录:

    • 前言
    • 一、SGA的深度解析
      • 1.1 SGA的作用与构成
        • SGA的大小与调整
      • 1.2 数据库缓冲区缓存(DB Cache)
        • DB Cache的工作原理
        • 案例演示:调整DB Cache的大小
      • 1.3 共享池(Shared Pool)的构成与调优
        • 共享池的组成部分:
        • 共享池的调优策略:
        • 案例演示:查询共享池的使用情况
      • 1.4 日志缓冲区(Log Buffer)的配置
        • 日志缓冲区的大小配置
        • 案例演示:查看日志缓冲区的写入情况
    • 二、PGA的详细讲解
      • 2.1 什么是PGA?
        • PGA的主要用途:
      • 2.2 PGA自动管理的原理与实践
        • 自动管理的好处:
        • 案例演示:启用PGA自动管理
    • 三、Oracle数据库后台进程的高级应用
      • 3.1 归档进程(ARCn)与归档日志管理
        • 归档模式的应用场景
        • 案例演示:启用归档模式
      • 3.2 恢复进程(RECO)与
      • 3.3 数据库监控进程(MMON)的角色
    • 四、总结与下期预告

前言

在上一篇文章【Oracle数据库架构基础】中,我们重点讲解了Oracle数据库的物理与逻辑存储结构,包括数据文件、控制文件、重做日志文件等的作用与管理,以及表空间、段、数据块的结构与优化策略。通过这些内容,大家对Oracle数据库如何在物理和逻辑上存储数据有了一个清晰的认识。

本期内容将聚焦于Oracle数据库的内存与进程架构,深入解析SGA(系统全局区)和PGA(程序全局区)的构成与优化策略,展示这些内存组件如何与Oracle的各类进程协同工作,从而提高数据库的性能和并发处理能力。此外,我们还将解析Oracle数据库中的关键后台进程,详细说明它们的功能与应用场景。最后,我们会为下期内容【安装前的准备工作】进行预告,帮助大家在实际应用中更好地准备Oracle数据库的安装。

一、SGA的深度解析

1.1 SGA的作用与构成

SGA(System Global Area,系统全局区)是Oracle数据库中最重要的共享内存区域,所有的数据库实例共享这块内存。SGA的主要作用是为数据库的运行提供缓存、共享的执行计划、数据块等,从而减少磁盘I/O并提升数据库性能。

SGA由多个组件组成,每个组件都有其特定的功能,主要包括:

  • 数据库缓冲区缓存(Database Buffer Cache):存放从数据文件中读取的数据块,用于减少磁盘I/O操作。
  • 共享池(Shared Pool):存储解析过的SQL语句、PL/SQL程序单元以及数据字典缓存,减少重复SQL解析的开销。
  • 重做日志缓冲区(Log Buffer):存储事务日志,确保数据库的事务一致性和可恢复性。
  • 大型池(Large Pool):用于支持诸如并行查询和RMAN(Oracle恢复管理器)备份等特定操作。
  • Java池:用于存储Java代码与数据,在Oracle中运行Java程序时使用。
SGA的大小与调整

SGA的总大小可以通过SGA_MAX_SIZESGA_TARGET参数进行设置。SGA_MAX_SIZE定义了SGA的最大内存使用量,而SGA_TARGET则是一个自动调节参数,用于在不同组件之间动态调整内存分配,以优化数据库性能。

1.2 数据库缓冲区缓存(DB Cache)

数据库缓冲区缓存(Database Buffer Cache)是SGA中最重要的组件之一,主要用于缓存从磁盘读取的数据块。当用户执行查询时,数据库会优先从缓存中查找数据块,而不是直接从磁盘读取,从而减少I/O操作。

DB Cache的工作原理

DB Cache基于LRU(Least Recently Used,最近最少使用)算法进行管理。常用的数据块会留在缓存中,而很少使用的块则会被淘汰,腾出空间给新读取的数据块。

为了优化性能,可以通过调整DB_CACHE_SIZE参数来增加或减少缓冲区的大小。对于高I/O负载的系统,合理的DB Cache配置可以显著减少磁盘读写操作,提高查询响应速度。

案例演示:调整DB Cache的大小
ALTER SYSTEM SET db_cache_size = 2G;

这条命令将数据库缓冲区缓存的大小设置为2GB。合理的DB Cache配置可以显著减少I/O等待时间,提高查询性能。

1.3 共享池(Shared Pool)的构成与调优

共享池(Shared Pool)是SGA中另一个关键组件,它用于存储SQL语句的解析树、执行计划以及PL/SQL代码块。共享池通过缓存这些信息,减少了SQL语句的重新解析次数,从而提升系统的性能。

共享池的组成部分:
  • 库缓存(Library Cache):存储已解析的SQL语句和执行计划。当相同的SQL语句再次执行时,Oracle可以直接使用缓存中的执行计划,避免重新解析SQL。
  • 数据字典缓存(Data Dictionary Cache):缓存数据库的系统元数据,如表、索引、视图等对象的信息,减少每次查询时访问数据字典表的开销。
共享池的调优策略:
  • 减少硬解析:硬解析会占用较多的系统资源,包括CPU和内存。因此,应该尽量减少SQL的硬解析,鼓励使用绑定变量(Bind Variables)来实现SQL的重用。
  • 共享池大小调整:通过调整SHARED_POOL_SIZE参数,确保共享池有足够的空间来存储常用的SQL语句和PL/SQL程序单元。过小的共享池会导致频繁的硬解析,影响性能。
案例演示:查询共享池的使用情况
SELECT * FROM v$sgastat WHERE pool = 'shared pool';

通过该查询,可以监控共享池的内存使用情况,并根据使用情况调整共享池的大小。

1.4 日志缓冲区(Log Buffer)的配置

日志缓冲区(Log Buffer)是SGA中的一个小型缓冲区,存储了事务的变更记录。事务提交时,Oracle会将日志缓冲区中的数据写入重做日志文件中,以确保数据库的事务一致性和可恢复性。

日志缓冲区的大小配置

日志缓冲区的大小通过LOG_BUFFER参数设置。对于大多数系统来说,日志缓冲区不需要设置得过大,因为Oracle会频繁地将缓冲区中的数据刷新到磁盘。但在高事务量的系统中,适当增大日志缓冲区可以减少日志写入的频率。

案例演示:查看日志缓冲区的写入情况
SELECT name, value FROM v$sysstat WHERE name = 'redo writes';

这条命令用于查看日志缓冲区的写入频率。如果频繁写入磁盘,可能意味着日志缓冲区太小,需要进行调整。


二、PGA的详细讲解

2.1 什么是PGA?

PGA(Program Global Area,程序全局区)是与每个Oracle服务器进程或后台进程相关的私有内存区域。与SGA不同,PGA不在进程之间共享,而是为每个进程独立分配。PGA主要用于处理排序操作、哈希表、会话相关的私有数据等。

PGA的主要用途:
  • 排序区:用于存储排序操作的中间结果。如果排序操作过大超出PGA内存,Oracle会将部分数据写入磁盘,称为“磁盘排序”,这会降低系统性能。
  • 会话内存:存储与会话相关的私有数据。

2.2 PGA自动管理的原理与实践

从Oracle 9i开始,PGA可以自动管理。数据库管理员只需设置PGA_AGGREGATE_TARGET参数,Oracle会根据当前系统的负载自动调整每个进程的PGA内存分配,以优化内存使用和系统性能。

自动管理的好处:
  • 简化管理:无需手动设置每个会话的PGA大小,Oracle会根据工作负载自动调整。
  • 提高资源利用率:自动管理能够更好地利用内存资源,防止内存不足或浪费。
案例演示:启用PGA自动管理
ALTER SYSTEM SET pga_aggregate_target = 4G;

这条命令将PGA的总目标设置为4GB,Oracle会根据此值自动调整每个进程的PGA分配。


三、Oracle数据库后台进程的高级应用

Oracle数据库的后台进程是数据库实例正常运行的关键,这些进程负责管理数据库的日志、恢复、归档、监控等操作。我们将介绍一些重要的后台进程及其在数据库运行中的作用。

3.1 归档进程(ARCn)与归档日志管理

归档进程(ARCn)负责将填满的重做日志文件复制到归档日志文件中。当数据库处于归档模式时,Oracle可以通过归档日志恢复到某一时间点。

归档模式的应用场景

归档模式在生产环境中非常重要,尤其是对于需要高数据可恢复性和长时间事务跟踪的系统。归档模式可以确保所有的提交事务都能被记录并保存在归档日志中,以便在需要时进行恢复。

案例演示:启用归档模式
ALTER DATABASE ARCHIVELOG;

通过启用归档模式,Oracle会自动将重做日志文件复制到归档日志中。

3.2 恢复进程(RECO)与

故障恢复

恢复进程(RECO)主要用于分布式数据库系统中,负责恢复处于失败状态的分布式事务。它能够在网络或系统故障后自动协调分布式事务的提交和回滚操作,确保数据的一致性。

3.3 数据库监控进程(MMON)的角色

MMON(Manageability Monitor)进程是一个负责数据库性能监控的后台进程。它会收集数据库的性能统计数据,并将这些数据写入AWR(Automatic Workload Repository)报告中,供DBA进行分析。MMON还负责触发告警机制,当数据库性能出现问题时,它会生成警告信息,提示管理员采取措施。

四、总结与下期预告

在本期内容中,我们详细解析了Oracle数据库的内存与进程架构。通过对SGA和PGA各个组成部分的深入分析,大家应该对Oracle如何通过内存管理和后台进程提升系统性能有了更清晰的认识。我们还介绍了归档进程、恢复进程和监控进程的高级应用,这些进程在数据库的高可用性和性能监控中发挥着关键作用。

在下一期内容中,我们将重点探讨【安装前的准备工作】,帮助大家了解在安装Oracle数据库之前所需的硬件和软件环境配置要求,以及如何进行系统优化和调整,为后续的安装打下坚实基础。

相关文章:

滚雪球学Oracle[1.3讲]:内存与进程架构

全文目录: 前言一、SGA的深度解析1.1 SGA的作用与构成SGA的大小与调整 1.2 数据库缓冲区缓存(DB Cache)DB Cache的工作原理案例演示:调整DB Cache的大小 1.3 共享池(Shared Pool)的构成与调优共享池的组成部…...

Nginx的正向与反向代理

一、Nginx简介 1. 什么是Nginx Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx是由俄罗斯的Igor Sysoev(伊戈尔赛索耶夫)为解决C10k问题(即…...

esp8266 at指令链接wifi时一直connect disconnest

那是你的连接wifi的名字密码有误或者热点有问题,看看热点是不是把设备拉入黑名单或者设置为5G或者连了校园网或者设置了最多链接设备...

基于SpringBoot博物馆游客预约系统【附源码】

基于SpringBoot博物馆游客预约系统 效果如下: 主页面 注册界面 展品信息界面 论坛交流界面 后台登陆界面 后台主界面 参观预约界面 留言板界面 研究背景 随着现代社会的快速发展和人们生活水平的提高,文化生活需求也在日益增加。博物馆作为传承文化、…...

【JVM】内存区域划分,类加载的过程,.class文件的格式

一个java写的程序,跑起来就得到了一个java进程,而java进程=JVM上面运行的字节码指令 JVM是「java虚拟机」,负责解释执行java的指令 【JVM内存区域划分】 1.程序计数器(比较小的空间) 作用:保存了下一条…...

esp32-camera入门(基于ESP-IDF)

主要参考资料: ESP32-S2 Kaluga camera lcd 示例入门: https://blog.csdn.net/Marchtwentytwo/article/details/121121028 摄像头应用方案常见问题汇总: https://docs.espressif.com/projects/esp-faq/zh_CN/latest/application-solution/camera-application.html …...

react中类式组件与函数式组件的区别

在React中,类式组件(Class Components)与函数式组件(Functional Components)是两种不同的组件定义方式,它们各有特点,适用于不同的场景。以下是它们之间的主要区别: 一、定义与语法…...

【D3.js in Action 3 精译_030】3.5 给 D3 条形图加注图表标签(下):Krisztina Szűcs 人物专访 + 3.6 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…...

【重学 MySQL】五十六、位类型

【重学 MySQL】五十六、位类型 定义赋值与使用注意事项应用场景 在MySQL数据库中,位类型(BIT类型)是一种用于存储位字段值的数据类型。 定义 BIT(n)表示n个位字段值,其中n是一个范围从1到64的整数。这意味着你可以存储从1位到64…...

Centos7 NTP客户端

目录 1. NTP客户端1.1 安装1.2 启动1.3 同步状态异常1.4 更改/etc/chrony.conf配置文件1.5 同步状态正常 1. NTP客户端 1.1 安装 如果chrony没有安装,可以使用以下命令安装 sudo yum install chrony1.2 启动 启动并设置开机自启 sudo systemctl start chronyd …...

手机号归属地查询-手机号归属地-手机号归属地-运营商归属地查询-手机号码归属地查询手机号归属地-运营商归属地

手机号归属地查询API接口是一种网络服务接口,允许开发者通过编程方式查询手机号码的注册地信息。关于快证签API接口提供的手机号归属地查询服务,以下是一些关键信息: 一、快证签API接口简介 快证签API接口可能是一个提供多种验证和查询服务…...

CoppeliaSim和Matlab建立远程连接教程

CoppeliaSim和Matlab建立远程连接教程 Matlab通过调用CoppeliaSim的远程API和库函数实现远程连接,为实现Matlab和CoppeliaSim的联合仿真做准备。 一、获取并查看版本信息 点击 Help 查看版本信息 使用的CoppeliaSim Edu版本为:4.4.0 位数:64bit 二、拷贝API函数和库文件…...

使用STS以及签名URL临时授权访问OSS资源

本文介绍JAVA如何使用STS以及签名URL临时授权访问OSS资源。 注意事项 由于STS临时账号以及签名URL均需设置有效时长,当您使用STS临时账号生成签名URL执行相关操作(例如上传、下载文件)时,以最小的有效时长为准。例如您的STS临时账…...

Next.js 14 使用 react-md-editor 编辑器 并更改背景颜色

1.简介 react-md-editor是一款markdown编辑器,本文介绍如何在Next.js中使用它。 2.安装 安装命令: npm install uiw/react-md-editor3.MD编辑器 markdown编辑器的使用: "use client" import MDEditor from uiw/react-md-edi…...

【Iceberg分析】Spark与Iceberg集成落地实践(一)

Spark与Iceberg集成落地实践(一) 文章目录 Spark与Iceberg集成落地实践(一)清理快照与元数据配置表维度自动清理元数据文件属性手动清理 清理孤岛文件合并数据文件 清理快照与元数据 配置表维度自动清理元数据文件属性 每一次写…...

【Verilog学习日常】—牛客网刷题—Verilog进阶挑战—VL45

异步FIFO 描述 请根据题目中给出的双口RAM代码和接口描述,实现异步FIFO,要求FIFO位宽和深度参数化可配置。 电路的接口如下图所示。 双口RAM端口说明: 端口名 I/O 描述 wclk input 写数据时钟 wenc input 写使能 waddr input 写…...

【强训笔记】day27

NO.1 代码实现&#xff1a; #include<iostream>using namespace std;int n,m; int main() {cin>>n>>m;long long retn;for(int i0;i<m-1;i)retret*(n-1)%109;cout<<ret<<endl;return 0; }NO.2 思路&#xff1a;bfs遍历实现&#xff0c;dis…...

Nginx06-静态资源部署

零、文章目录 Nginx06-静态资源部署 1、静态资源概述 静态资源&#xff1a;是在Web开发中不经常改变的文件&#xff0c;比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的&#xff0c;不需要服务器端的动态处理。动态资源&#xff1a;是在Web开发中需…...

MySQL数据库专栏(二)SQL语句基础操作

目录 数据库操作 创建数据库 查看数据库 选择数据库 删除数据库 数据表操作 数据表数据类型 数据表列约束 数据表索引 创建表 查看表 查看表结构 删除表 数据表的增删改操作 …...

【OpenCV 实战】1.手势虚拟拖拽(双手骨骼点识别)

step: 1.opencv 获取视频流 2.在画面上画一个方块 3.通过mediapipe获取手指关键点坐标 4.判断手指是否在方块上 5.若在方块上&#xff0c;方块跟着手指移动 mediapipe网站介绍&#xff1a;Hands - mediapipe (chuoling.github.io) 已上传到GitHub &#xff1a; plumqm/OpenC…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...