ORACLE 内存结构之系统全局区(SGA)

每个 Oracle 数据库实例都会在内存中分配一个很大的内存结构,

称为系统全局区(System Global Area),

这是一个大型的共享内存结构,每个Oracle进程都会访问它。

在Linux/Unix操作系统上,SGA是一个物理实体,使用操作系统命令能“看到它”。

它被操作系统物理地划分为一个共享内存段,进程可以附加到这段独立的内存上。

咱们可以把SGA想象成燃油汽车的前置仓,在这个前置仓里面会有发动机,变速器、发电机、轴转动等各种组件。

SGA也是可以脱离Oracle进程而独立存在的内存结构,

就像即使发动机,变速器、发电机、转轴等不安装到前置仓里面,前置仓也可以独立存在。

但是,在实际生产环境中,如果真的只有 SGA 而没有任何 Oralce 进程存在,

那说明数据库已经以某种方式崩溃了,

这种情况类似燃油汽车出故障停止运转了,但是前置仓依然存在。

在UNIX/Linux系统中,Oracle数据库通常以多个进程的形式运行,

其中包括了前台和后台进程,以及分配给SGA的共享内存区域。

这意味着SGA在物理内存中是一个独立的共享内存段,可以通过特定的命令和工具查看和管理。

要在Linux中查看 SGA ,我们可以通过 ipcs -m | grep ora 命令:

[root@localhost ~]# ipcs -m | grep ora
0x00000000 2          oracle     600        10485760   84                      
0x00000000 3          oracle     600        8573157376 84                      
0x00000000 4          oracle     600        8388608    84                      
0x4bba7b74 5          oracle     600        81920      84                      
[root@localhost ~]# 

由于不同操作系统在进程模型上的差异,Oracle数据库的工作方式和内存管理方式是有所不同的。

在Windows系统中,无法像UNIX/Linux.上那样把SGA看成一个实体。

这是由于在Windows平台上,Oracle数据库通常以一个单独的进程【oracle.exe】的形式运行,

该进程拥有Windows单独分配的内存地址空间,SGA会被分配到这个进程的私有内存中。

这使得SGA在Windows中看起来更像是进程的一部分,而不是一个独立的共享内存段。

如果使用Windows Task Manager(任务管理器)或其他性能工具,

则可以看到操作系统给 oracle.exe总共分配了多少内存空间,

显示【oracle.exe】 进程的总内存使用量,

但无法以与UNIX/Linux中相同的方式区分SGA和其他进程内存。

正是因为在操作系统层面存在这种差异,为了更加精细化的管理和查看 SGA,

Oracle在数据库内部提供了自己的动态性能视图【v$sgastat】,以帮助管理和监视SGA的性能和使用情况。

SQL> compute sum of bytes on pool
SQL> break on pool skip 1
SQL> select pool,name,bytes from v$sgastat order by pool,name;POOL	       NAME			       BYTES
-------------- -------------------------- ----------
java pool      free memory		   100663296
**************				  ----------
sum					   100663296large pool     PX msg pool		     9437184free memory		    24117248
**************				  ----------
sum					    33554432shared pool	kghrcx RO latch director	  161105.kgght		       36784POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    11G QMN so			70001:kngisga		       32152343.kgght		       36784358.kgght			7992432.kgght		       36784435.kgght		       36784438.kgght		       36784441.kgght		       36784444.kgght		       36784447.kgght		       36784450.kgght		       36784POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    453.kgght		       36784615.kggec		      5493286248.kgght		      1671606249.kgght		      1671606250.kgght		      167160ADR_CONTROL			3264ADR_CONTROL_AUX			1920ADR_INVALIDATION 		1536AQ Message cache driver s      190880AQ Propagation Scheduling       64000AQ Slave list			8680POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    AQ coordinator job list		4144AQ skiplist state object        63672AQ: Master/Slave state ob       55440AQ: Non Durable Sub state      109152ASH buffers		    12582912ASM KFFD SO			2992ASM SR state object	       35224ASM connection state	      364464ASM generic network state	2736ASM kfk state object		3760ASM map operations		3760POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    ASM rcl group		       91560ASM rollback operations		4272ASM scan context 		2736ASMCMD BG process		3504AW SGA				  40AWR Data Source Info (KEW	   8AWR Flushing Error Contro	  80AWR Table Info (KEW layer	3048AWR View Info (KEW layer)	 160Active Session History - 	1528Alert log			 520POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Allocate KPDB Hash Table 	8192Array of TopN Table delta	  16Array of cached attr		 400Auto BMR for File Header 	  56Auto tune undo info		  96Autotask Error Control in	  80BRANCH TABLE SEGMENTED AR      226192Background process state 	  48Backup Appliance state ch	3760Banner Storage			2048Big SQL Shared Memory SO 	3064POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Block List		     2232032CGS system incarn array	       24864Checkpoint queue 		3456Cleanup state objects		1536Client ID trace setting h	 536Client ID trace settings 	4016Closed Thread SCN Bitvec        33792Context of deferred reuse	2560Core dump directory		 520DBWR array of pointers to	   8DBWR event stats array		 232POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DDE_USER_ACTION			2496DDE_USER_ACTION_DEF		2880DDE_USER_ACTION_PARAMETER	4608DDE_USER_INCIDENT_ACTION_	1536DDE_USER_INCIDENT_TYPE		1536DFW_CONFIG_CAPTURE		1728DFW_CONFIG_ITEM			2112DFW_PATCH_CAPTURE		1728DFW_PATCH_ITEM			1920DFW_PURGE			3648DFW_PURGE_ITEM			2880POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DISPATCHER CONFIG ENTRY		 120DISPATCHER CONFIG TABLE		2048DISPATCHERS INFO 		2632DML lock 		     3336432DNFS Disp Cle q Rec		  56DNFS Disp Com q Rec		  48DNFS Disp Iss q Rec		  40DNFS Disp cleanup ctx		  24DNFS Disp comp array	       24000DNFS Disp comp array coun	6000DNFS Disp context		  64POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DNFS Disp context arr		   8DNFS Disp spawn ctx		  24DTP proc structure alloc        39088Database type info cache 	  32Dep type array			  56Detached dump directory		 520EM_DIAG_JOB			2880EM_TARGET_INFO			2688EM_USER_ACTIVITY 		2688ENQUEUE FREELISTS		1104ENQUEUE STATS		       43416POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Entity type array		  56Exadirect acl			3240Expression usage element 	2816External table user state      116136FileIdentificatonBlock	      906904FileOpenConsolidatedBlock      265488Fixed UGA alloc ctx		  56Fxd UGA kghx lists		   8Fxd UGA latch array		 160Fxd UGA latch ptrs		   8Fxd UGA opcode array		   8POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Fxd UGA recovery ptrs		   8Global Context Heap descr	 400Global dictionary parent       163840Global dictionary read-wr      163840HM Hang Stats			6272HM Lcl Sess Info 	      401024HM PC Rank			 256HM RSLN RC			3712HM SGA context		       78816HM SGA init var			  32HM SGA kjzs ctx			  24............行数过多,中间省略............POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    v_inccount			1536v_incfcount			1728v_ipsprbcnt			1536v_ipsprbcnt1			1536v_nfcinc 			2112v_swperrcount			1536vadr_control			4032vem_user_actlog			1536vem_user_actlog1 		1536vhm_run				4416vinc_meter_info			3840POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vincident			7104vincident_file			2496vips_file_copy_log		3648vips_file_metadata		2112vips_package_file		2880vips_package_history		3072vips_package_incident_det       10560vips_package_main_int		1536vips_package_main_problem	1728vips_package_size		1536vips_pkg_file			3456POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vips_pkg_incident_candida	7104vnot_exist_incident		6912vpdb_problem			3648vproblem 			5952vproblem1			5568vproblem2			5760vproblem_bucket			2112vproblem_bucket1 		2112vproblem_bucket_count		2304vproblem_int			5376vproblem_lastinc 		5184POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vshowcatview			1920vshowincb			1920vshowincb_i			1920vtest_exists			2496work area table entry	      265856write info array 	       65536write state object	    14263584writes stopped lock conte	  32writes stopped lock state	  24x$ksmfs table			 160x$rule_set		       39208POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    xscalc				4144xslongops		       16400xssinfo				9360zafwctx			      182704zasasga				  16zlllab Group Tree Heap De	 160
**************				  ----------
sum					  1342177280buffer_cache		  6962544640fixed_sga		     8945744POOL	       NAME			       BYTES
-------------- -------------------------- ----------log_buffer		     7827456shared_io_pool		   134217728
**************				  ----------
sum					  71135355681456 rows selected.SQL> 

Oracle数据库的共享内存区域(System Global Area,SGA)内部被划分为不同的内存池,

每个内存池用于存储不同类型的数据和信息。

这种划分有助于有效地管理数据库内存资源和提高性能。

在Oracle数据库的SGA(System Global Area)中,以下几个池是主要的,

因为它们在数据库性能和内存管理方面起着关键作用:

1. Buffer Cache(缓冲池)缓冲池是SGA中最重要的池之一。它用于缓存磁盘上的数据块,以减少磁盘IO操作的频率。数据库中的数据块(通常大小为8KB)在查询和修改时被加载到缓冲池中,如果相同的数据块被后续查询请求使用,就可以从内存中读取,而不是从磁盘。这大大提高了查询性能。

2.Shared Pool(共享池):共享池用于存储SQL语句的解析信息、共享的SQL区域和PL/SQL块。这有助于减少SQL语句的解析次数,提高性能。共享池还包括诸如数据字典缓存等重要信息。

3. Redo Log Buffer(重做日志缓冲区):重做日志缓冲区用于存储正在进行的事务的重做日志记录,以确保事务的持久性。重做日志是数据库恢复的关键部分,因此它的性能至关重要。

这些主要池在Oracle数据库的正常运行中扮演着至关重要的角色,

它们直接影响着数据库的性能和可用性。

DBAs(数据库管理员)通常会根据数据库的工作负载和性能需求来配置和调整这些池的大小,

以确保数据库能够有效地使用内存资源并满足性能要求。

其他池还包括:

  • Java 池(Java pool):Java池是为数据库中运行的Java虚拟机(JVM)所分配的一段固定大小的内存。在Oracle Database 10g及更高版本中,Java池可以在数据库启动和运行时动态调整大小。
  • 大池(large pool):在使用共享服务器连接时存放会话内存(UGA)、在使用并行执行功能时做为消息缓冲区、在RMAN备份时做为磁盘I/O缓冲区。大池可以动态调整大小。
  • 流池(streams pool):这是一个专门针对数据传输/共享工具(例如Oracle GoldenGate 和OracleStreams)的内存池。它是Oracle Database 10g中新增的,可以动态调整大小。如果未配置流池,但是使用了流功能,Oracle会使用共享池中最多10%的空间作为流内存。
  • “空”池(“Null”pool):这个池其实没有名字。它是块缓冲区(用来缓存数据库块)、重做日志缓冲区和“固定SGA”区专用的内存。

其他池(如Large Pool和Java Pool等)也可以根据具体的需求进行配置和管理,

但它们通常不像上述三个主要池那样频繁地调整。

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

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

相关文章

算法题系列8·买卖股票的最佳时机

目录 题目描述 实现 提交结果 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。 设计一个算法来计算你所能获取的最大利润。…

mrctf2020_shellcode_revenge

mrctf2020_shellcode_revenge Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: PIE enabled RWX: Has RWX segments64位,开了PIE和RELRO,看到RWX出来,就感觉是shellcode了…

什么是Promise链(Promise chaining)?它在异步编程中的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Promise 链?⭐ 异步编程中的作用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、…

FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)

文章目录 前言一、空闲任务概念二、钩子函数概念三、任务调度算法四、任务调度算法实验1.实验代码2.是否抢占3.时间片是否轮转4.空闲任务让步 总结 前言 本篇文章将带大家学习一下什么是空闲任务以及钩子函数,以及学习FreeRTOS中的任务调度算法,了解在F…

基于风险的漏洞管理实现高效安全

通常,网络中存在很多漏洞,修补和修复它们是一个永无止境的过程。但总会有这样的问题:“我应该首先补救什么?如果在我发现另一个开放漏洞之前就被攻击者利用怎么办?” 如何才能避免自己陷入怨恨和悔恨的想法中&#x…

麒麟信安服务器操作系统V3.5.2重磅发布!

9月25日,麒麟信安基于openEuler 22.03 LTS SP1版本的商业发行版——麒麟信安服务器操作系统V3.5.2正式发布。 麒麟信安服务器操作系统V3定位于电力、金融、政务、能源、国防、工业等领域信息系统建设,以安全、稳定、高效为突破点,满足重要行…

2023-9-29 JZ33 二叉搜索树的后序遍历序列

题目链接&#xff1a;二叉搜索树的后序遍历序列 import java.util.*; public class Solution {int [] seq;public boolean VerifySquenceOfBST(int [] sequence) {if(sequence.length < 0) return false;this.seq sequence;return dfs(0, seq.length - 1);}public boolean …

【3】贪心算法-最优装载问题-加勒比海盗

算法背景 在北美洲东南部&#xff0c;有一片神秘的海域&#xff0c;那里碧海蓝天、阳光 明媚&#xff0c;这正是传说中海盗最活跃的加勒比海&#xff08;Caribbean Sea&#xff09;。 有一天&#xff0c;海盗们截获了一艘装满各种各样古董的货船&#xff0c;每一 件古董都价值连…

计算机图像处理-均值滤波

均值滤波 线性滤波器的原始数据与滤波结果是一种算术运算&#xff0c;即用加减乘除等运算实现&#xff0c;如均值滤波器&#xff08;模板内像素灰度值的平均值&#xff09;、高斯滤波器&#xff08;高斯加权平均值&#xff09;等。由于线性滤波器是算术运算&#xff0c;有固定…

嵌入式Linux应用开发-第十章LED模板总线设备驱动模型

嵌入式Linux应用开发-第十章LED模板总线设备驱动模型 第十章 LED模板驱动程序的改造&#xff1a;总线设备驱动模型10.1 原来的框架10.2 要实现的框架10.3 写代码10.3.1 注意事项10.3.2 实现 platform_device结构体10.3.3 实现 platform_driver结构体 10.4 课后作业 第十章 LED模…

HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)

环境&#xff1a; 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip&#xff08;底层是Ubuntu 20.04系统&#xff09; 5.十字螺丝刀 6.翘片/薄铲子 7.有线网络环境 8.镊子/回形针 问题描述&#xff1a; 最近玩智能家居…

客户端负载均衡_负载均衡策略

以前的Ribbon有多种负载均衡策略 RandomRule - 随性而为 解释&#xff1a; 随机 RoundRobinRule - 按部就班 解释&#xff1a; 轮询 RetryRule - 卷土重来 解释&#xff1a; 先按照RoundRobinRule的策略获取服务&#xff0c;如果获取服务失败则在指定时间内会进行重试。 Weigh…

OpenHarmony自定义组件介绍

一、创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑…

【面试八股】IP协议八股

IP协议八股 子网掩码的作用为什么IP协议需要分片IP协议什么时候需要分片IP协议是怎么进行分片的那么IP协议是如果进行标识属于同一个分片呢&#xff1f;TCP协议和UDP协议将数据交给IP协议之后&#xff0c;是否需要分片传输&#xff1f; 子网掩码的作用 用来标识网络号和主机号…

照片后期处理软件DxO FilmPack 6 mac中文说明

DxO FilmPack 6 for Mac是一款照片后期处理软件。它可以模拟超过60种著名胶片品牌和类型的色彩和颗粒感&#xff0c;使照片具有复古、艺术和时尚风格。 ​DxO FilmPack 6 mac支持RAW和JPG格式的照片&#xff0c;并提供丰富的调整选项&#xff0c;如亮度、对比度、曝光、阴影和高…

Linux Qt5.15.2 编译QWebEngine源码支持音视频H264

背景 默认自带的QWebEngine 因版权问题不支持音视频功能&#xff0c;需要自己编译源码以支持。 平台&#xff1a;Linux&#xff08;UOS V20 1050&#xff09; Qt&#xff1a;5.15.2 准备工作 下载 Qt 5.15.2 对应版本源码&#xff0c;使用镜像网站或者Qt Maintenance Tool工…

Docker-Windows安装使用

1.下载docker https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.配置虚拟化环境 通过控制面板“设置”启用 Hyper-V 角色 右键单击 Windows 按钮并选择“应用和功能”。选择相关设置下右侧的“程序和功能”。选择“打开或关闭 Windows 功能”。选择“Hyper-…

解决vs2022项目文件夹内.vs文件夹容量虚高问题

打开系统显示隐藏文件夹 会在vs2022的项目文件夹内有一个.vs文件夹 在子目录里会有一个Browse.VC.db文件,我的项目代码只有120m,而这个db文件居然有70m 而且每次打开vs项目,会使这个文件发生容量变化,如果你的git项目恰好包含这个.vs文件夹,那就比较不爽了,每次都要更新这个文件…

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例 准备条件: PLC:S7-1200 1214C DC/DC/DC 系统版本4.5及以上。 机器人控制柜:安川YRC1000。 软件:TIA V17 PLC做主站,机器人做从站。 具体方法可参考以下内容: 使用的库文件为西门子 1200系列…

BUUCTF reverse wp 21 - 30

[ACTF新生赛2020]rome 无壳, 直接拖进IDA32 y键把v2改成char[49], n键重命名为iuput int func() {int result; // eaxint v1[4]; // [esp14h] [ebp-44h]char input[49]; // [esp24h] [ebp-34h] BYREFstrcpy(&input[23], "Qsw3sj_lz4_Ujwl");printf("Please…