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

news2024/11/28 1:50:34

每个 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					   100663296

large pool     PX msg pool		     9437184
	       free memory		    24117248
**************				  ----------
sum					    33554432

shared pool	kghrcx RO latch director	  16
	       1105.kgght		       36784

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    11G QMN so			7000
	       1:kngisga		       32152
	       343.kgght		       36784
	       358.kgght			7992
	       432.kgght		       36784
	       435.kgght		       36784
	       438.kgght		       36784
	       441.kgght		       36784
	       444.kgght		       36784
	       447.kgght		       36784
	       450.kgght		       36784

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    453.kgght		       36784
	       615.kggec		      549328
	       6248.kgght		      167160
	       6249.kgght		      167160
	       6250.kgght		      167160
	       ADR_CONTROL			3264
	       ADR_CONTROL_AUX			1920
	       ADR_INVALIDATION 		1536
	       AQ Message cache driver s      190880
	       AQ Propagation Scheduling       64000
	       AQ Slave list			8680

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    AQ coordinator job list		4144
	       AQ skiplist state object        63672
	       AQ: Master/Slave state ob       55440
	       AQ: Non Durable Sub state      109152
	       ASH buffers		    12582912
	       ASM KFFD SO			2992
	       ASM SR state object	       35224
	       ASM connection state	      364464
	       ASM generic network state	2736
	       ASM kfk state object		3760
	       ASM map operations		3760

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    ASM rcl group		       91560
	       ASM rollback operations		4272
	       ASM scan context 		2736
	       ASMCMD BG process		3504
	       AW SGA				  40
	       AWR Data Source Info (KEW	   8
	       AWR Flushing Error Contro	  80
	       AWR Table Info (KEW layer	3048
	       AWR View Info (KEW layer)	 160
	       Active Session History - 	1528
	       Alert log			 520

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Allocate KPDB Hash Table 	8192
	       Array of TopN Table delta	  16
	       Array of cached attr		 400
	       Auto BMR for File Header 	  56
	       Auto tune undo info		  96
	       Autotask Error Control in	  80
	       BRANCH TABLE SEGMENTED AR      226192
	       Background process state 	  48
	       Backup Appliance state ch	3760
	       Banner Storage			2048
	       Big SQL Shared Memory SO 	3064

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Block List		     2232032
	       CGS system incarn array	       24864
	       Checkpoint queue 		3456
	       Cleanup state objects		1536
	       Client ID trace setting h	 536
	       Client ID trace settings 	4016
	       Closed Thread SCN Bitvec        33792
	       Context of deferred reuse	2560
	       Core dump directory		 520
	       DBWR array of pointers to	   8
	       DBWR event stats array		 232

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DDE_USER_ACTION			2496
	       DDE_USER_ACTION_DEF		2880
	       DDE_USER_ACTION_PARAMETER	4608
	       DDE_USER_INCIDENT_ACTION_	1536
	       DDE_USER_INCIDENT_TYPE		1536
	       DFW_CONFIG_CAPTURE		1728
	       DFW_CONFIG_ITEM			2112
	       DFW_PATCH_CAPTURE		1728
	       DFW_PATCH_ITEM			1920
	       DFW_PURGE			3648
	       DFW_PURGE_ITEM			2880

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DISPATCHER CONFIG ENTRY		 120
	       DISPATCHER CONFIG TABLE		2048
	       DISPATCHERS INFO 		2632
	       DML lock 		     3336432
	       DNFS Disp Cle q Rec		  56
	       DNFS Disp Com q Rec		  48
	       DNFS Disp Iss q Rec		  40
	       DNFS Disp cleanup ctx		  24
	       DNFS Disp comp array	       24000
	       DNFS Disp comp array coun	6000
	       DNFS Disp context		  64

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    DNFS Disp context arr		   8
	       DNFS Disp spawn ctx		  24
	       DTP proc structure alloc        39088
	       Database type info cache 	  32
	       Dep type array			  56
	       Detached dump directory		 520
	       EM_DIAG_JOB			2880
	       EM_TARGET_INFO			2688
	       EM_USER_ACTIVITY 		2688
	       ENQUEUE FREELISTS		1104
	       ENQUEUE STATS		       43416

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Entity type array		  56
	       Exadirect acl			3240
	       Expression usage element 	2816
	       External table user state      116136
	       FileIdentificatonBlock	      906904
	       FileOpenConsolidatedBlock      265488
	       Fixed UGA alloc ctx		  56
	       Fxd UGA kghx lists		   8
	       Fxd UGA latch array		 160
	       Fxd UGA latch ptrs		   8
	       Fxd UGA opcode array		   8

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    Fxd UGA recovery ptrs		   8
	       Global Context Heap descr	 400
	       Global dictionary parent       163840
	       Global dictionary read-wr      163840
	       HM Hang Stats			6272
	       HM Lcl Sess Info 	      401024
	       HM PC Rank			 256
	       HM RSLN RC			3712
	       HM SGA context		       78816
	       HM SGA init var			  32
	       HM SGA kjzs ctx			  24

............

行数过多,中间省略

............

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    v_inccount			1536
	       v_incfcount			1728
	       v_ipsprbcnt			1536
	       v_ipsprbcnt1			1536
	       v_nfcinc 			2112
	       v_swperrcount			1536
	       vadr_control			4032
	       vem_user_actlog			1536
	       vem_user_actlog1 		1536
	       vhm_run				4416
	       vinc_meter_info			3840

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vincident			7104
	       vincident_file			2496
	       vips_file_copy_log		3648
	       vips_file_metadata		2112
	       vips_package_file		2880
	       vips_package_history		3072
	       vips_package_incident_det       10560
	       vips_package_main_int		1536
	       vips_package_main_problem	1728
	       vips_package_size		1536
	       vips_pkg_file			3456

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vips_pkg_incident_candida	7104
	       vnot_exist_incident		6912
	       vpdb_problem			3648
	       vproblem 			5952
	       vproblem1			5568
	       vproblem2			5760
	       vproblem_bucket			2112
	       vproblem_bucket1 		2112
	       vproblem_bucket_count		2304
	       vproblem_int			5376
	       vproblem_lastinc 		5184

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    vshowcatview			1920
	       vshowincb			1920
	       vshowincb_i			1920
	       vtest_exists			2496
	       work area table entry	      265856
	       write info array 	       65536
	       write state object	    14263584
	       writes stopped lock conte	  32
	       writes stopped lock state	  24
	       x$ksmfs table			 160
	       x$rule_set		       39208

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
shared pool    xscalc				4144
	       xslongops		       16400
	       xssinfo				9360
	       zafwctx			      182704
	       zasasga				  16
	       zlllab Group Tree Heap De	 160
**************				  ----------
sum					  1342177280

	       buffer_cache		  6962544640
	       fixed_sga		     8945744

POOL	       NAME			       BYTES
-------------- -------------------------- ----------
	       log_buffer		     7827456
	       shared_io_pool		   134217728
**************				  ----------
sum					  7113535568


1456 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.coloradmin.cn/o/1042127.html

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

相关文章

计算机类软件方向适合参加的比赛

前言 博主是一名计算机专业的大三学生,在校时候参加了很多比赛和训练营,现在给大家博主参加过的几个的比赛,希望能给大一大二的学生提供一点建议。 正文 最近也有比赛的,我会从时间线上来给大家推荐一些比赛,并且给…

NLP中token总结

Token 可以被理解为文本中的最小单位。在英文中,一个 token 可以是一个单词,也可以是一个标点符号。在中文中,通常以字或词作为 token。ChatGPT 将输入文本拆分成一个个 token,使模型能够对其进行处理和理解 在自然语言处理&#…

virtualbox安装linux虚拟机访问互联网(外网)的方法

virtualbox安装linux虚拟机访问互联网(外网)的方法 设置方法效果图 设置方法 效果图

【C++11】万能引用与完美转发

文章目录 1. 模板中的&&—万能引用2. 完美转发及其应用场景3. 用到的代码3.1 string.h3.2 list.h3.3 test.cpp 1. 模板中的&&—万能引用 首先我们来看这样一段代码: 这里有4个函数,我们很容易能看出来它们是一个重载的关系 然后我们给这…

Windows下libmodbus 支持upd库的编译与Qt里的调用

一. libmodbus 支持udp版库下载 https://github.com/systemmonkey42/libmodbus/tree/udp_support 二. MSYS2编译工具安装 (1)下载MSYS2并安装 下载地址:https://www.msys2.org/ 双击该exe,安装msys2 (2) 安装编译所需库 在软件安…

js惰性函数 ----如何让函数执行之后只执行函数某一部分

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…

微信小程序 request合法域名 中设置WebSocket的wss/ws报错 该域名协议头非法 问题解决

微信小程序并不支持直接用wss://格式去设置域名 但其实我们可以用缓兵之计 这里 我们直接改成 https的 然后 我们照常通过 wss://ws-api.turingapi.com/api/v2去链接 可以看到 他这里依旧连接成功了

Spring MVC 之 Restful 风格请求⽀持

Tips: REST⻛格请求是什么样的?SpringMVC对REST⻛格请求到底提供了怎样的⽀持 在 Web 系统中,前端通过 HTTP 请求给后端传递参数有四种方式,可以将参数放在请求路径、Query 参数、HTTP 协议头、HTTP 协议体中。而放在协议体中的…

五,修改.hdr插件

由于辐照度贴图是.hdr格式, glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, width, height, 0, GL_RGB, GL_FLOAT, data); osg的.hdr插件需要修改,否则格式不对。 即在ReaderWriterHDR::readImage()中修改, bool convertToRGB8 true;int pixel…

【iOS逆向与安全】DTRpcClient 抓包和代码分析记录

frida-trace -UF -m "-[DTRpcConfig isAMRPC]"onEnter(log, args, state) {log(-[DTRpcConfig isAMRPC] ~~~~~);var customObj new ObjC.Object(args[0]); // 自定义对象// 打印该对象所有属性var ivarList customObj.$ivars;for (key in ivarList) {log(key${key…

【SpringBoot】| SpringBoot集成Dubbo

目录 一:SpringBoot集成Dubbo 1. 创建公共项目 2. 创建提供者项目provider 3. 创建消费者consumer项目 4. 注册中心Zookeeper的安装 图书推荐:《Python 自动化办公应用大全》 一:SpringBoot集成Dubbo 阿里巴巴提供了 dubbo 集成 spring…

原来,这就是现货黄金投资最大的悲哀

在现货黄金投资之中,最大的悲哀是什么呢?首先要知道的是现货黄金投资中最大的悲哀并不是亏损,比如投资者会问我都亏损了,为什么不是最大的悲?哎,不就是因为想进行现货黄金投资,就是想获利的吗&a…

北斗导航系统为渔船保驾护航,助力海洋渔业发展

在无垠的海洋中,渔船扮演着举足轻重的角色,为人们带来美味的海鲜。然而,每一次渔船出海都充满了未知和危险,船只的安全成为了渔民和国家关注的焦点。幸运的是,北斗导航系统作为一项顶级技术正在为渔船保驾护航&#xf…

肖sir___环境的讲解详情__002

一、环境讲解 1、jdk 什么是JDK?JDK的作用? JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。 包含了各种类库和工具,机器不是直接识别语言的,会借助…

零信任沙盒

零信任沙盒分析对比 互联网早期的沙盒(sandbox)又译为沙箱,意为在计算机安全领域中构建一种安全机制,为运行中的程序提供的隔离环境。通常用来测试一些来源不可信、具破坏力或无法判定的程序,特别是病毒木马类的程序。…

塔望食研院|千亿食用油市场拐点,量减价增,竞争加剧!

自2022年12月塔望咨询开设塔望食品大健康消费研究院(简称塔望食研院)栏目以来,塔望食研院以“为食品行业品牌高质量发展赋能”为理念,不断发布食品大健康行业研究、消费研究报告。塔望食研院致力于结合消费调研数据、企业数据、第…

XC8233 电容式单按键触摸检测 IC 广泛应用于 TWS及 DC 应用上,实现产品智能化

目前市面上很多的小家电和消费类电子都已经改成触摸式的按键功能,而XC8233是一款电容式单按键触摸检测及接近感应控制芯片。采用 CMOS 工艺制造,内建稳压和去抖动电路,高可靠性,专为取代传统按键开关而设计。超低功耗与宽工作电压…

Java笔记:手写spring之简单实现springboot

手写spring之简单实现springboot 仓库地址: Raray-chuan/mini-spring 博文列表: 导读手写spring之ioc手写spring之aop手写spring之简单实现springboot 1.springmvc框架的理解 什么是MVC: MVC就是一个分层架构模式: MVC 设计模式一般指 MVC 框架,M&#xff08…

ALM物联网管理平台助力中台上云 数字化转型让展示更直观清晰

支持移动浏览、支持大屏显示等功能,能够为设备厂家提供数据依据,方便厂家的售后以及产品的维护、为运维等相关公司提供运维管理等相关功能。 ALM物联网云平台是基于以往的物联网产品,以及目前市场上的各种云平台优点,研精心打造的…

车联网安全集智联盟正式成立

2023年9月22日,在工业和信息化部网络安全管理局支持下,2023年世界智能网联汽车大会——“集智创新车联网安全新格局”特色专场在北京举行。工业和信息化部网络安全管理局领导出席并致辞,中国工程院邬江兴院士以及来自政产学研用等各方的领导和…