滚雪球学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_SIZE和SGA_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 代码实现: #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 思路:bfs遍历实现,dis…...
Nginx06-静态资源部署
零、文章目录 Nginx06-静态资源部署 1、静态资源概述 静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理。动态资源:是在Web开发中需…...
MySQL数据库专栏(二)SQL语句基础操作
目录 数据库操作 创建数据库 查看数据库 选择数据库 删除数据库 数据表操作 数据表数据类型 数据表列约束 数据表索引 创建表 查看表 查看表结构 删除表 数据表的增删改操作 …...
【OpenCV 实战】1.手势虚拟拖拽(双手骨骼点识别)
step: 1.opencv 获取视频流 2.在画面上画一个方块 3.通过mediapipe获取手指关键点坐标 4.判断手指是否在方块上 5.若在方块上,方块跟着手指移动 mediapipe网站介绍:Hands - mediapipe (chuoling.github.io) 已上传到GitHub : plumqm/OpenC…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
