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

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等)也可以根据具体的需求进行配置和管理,

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

相关文章:

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

每个 Oracle 数据库实例都会在内存中分配一个很大的内存结构, 称为系统全局区(System Global Area), 这是一个大型的共享内存结构,每个Oracle进程都会访问它。 在Linux/Unix操作系统上,SGA是一个物理实体,使用操作系统命令能“看到它”。 它被操作系…...

主要文档分享网站一览

136****0621的全部文档-第1页-原创力文档 目前能提供上传文档并付费的网站: 1、得利文库 www.deliwenku.com 先说我自已的吧!见笑了 2、百度文库 wenku.baidu.com 这个算头部了、有流量倾斜、但资源多、用户现在上传的大部份为重复的,…...

CPU访问一个虚拟地址的整体流程

一、虚拟地址转换成物理地址 涉及到的部件: MMU:虚拟地址—MMU—>物理地址。MMU会控制整个流程(查快表、查慢表等等)TLB快表:组号(若为组相联TLB)、TLB标记、有效位、页框号页表&#xff08…...

UE5 虚幻引擎 如何使用构造脚本(Construction Script)? 构造脚本的奥秘!

目录 1 构造脚本(Construction Script)1.1 介绍1.2 案例1:利用样条组件程序化生成树木1.2 案例2:利用样条组件和样条网格体组件程序化生成道路 1 构造脚本(Construction Script) 1.1 介绍 问题&#xff1a…...

Mysql高级——数据库设计规范(2)

8. ER模型 ER 模型中有三个要素,分别是实体、属性和关系。 实体,可以看做是数据对象,往往对应于现实生活中的真实存在的个体。在 ER 模型中,用矩形来表示。实体分为两类,分别是强实体和弱实体。强实体是指不依赖于其…...

c++-string

文章目录 前言一、STL库介绍二、标准库中的string类1、string类介绍2、string类使用3.1 string类的构造函数3.2 string类对象的容量操作3.3 string类对象的遍历操作3.4 string类对象的访问操作3.5 string类对象的修改操作3.6 string类对象的字符串操作 三、模拟实现string类四、…...

KNN-K近邻算法(K-Nearest Neighbors)

k近邻算法的特点 思想极度简单应用数学知识少(近乎为零)效果好(缺点?)可以解释机器学习算法使用过程中的很多细节问题更完整的刻画机器学习应用的流程 k近邻算法 k近邻算法整体是这样的一个算法,我们已经知道的这些数据点其实是…...

ChatGPT:理解HTTP请求数据格式:JSON、x-www-form-urlencoded和form-data

ChatGPT:理解HTTP请求数据格式:JSON、x-www-form-urlencoded和form-data 使用postman发送一个post请求,在body里面加上了form-data数据,namexxx,age23,为什么输出request.body()得到的是这样的结果 -------…...

字符集、IO流(一)

字符集、IO流(一) 各位同学,前面我们已经学习了File类,通过File类的对象可以对文件进行操作,但是不能操作文件中的内容。要想操作文件中的内容,我们还得学习IO流。但是在正式学习IO流之前,我们还需要学习一个前置知识叫做字符集,只有我们把字符集搞明白了,再学习IO流…...

相乘(蓝桥杯)

相乘 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 1 …...

[AFCTF 2018]你能看出这是什么加密么

最开始是我对rsa的小小的理解 rsa也就是非对称加密算法,拥有公开的加密密钥和解密密钥,这也是我们写脚本的基础 选取素数p和q,计算乘积npq,以及(n)(p-1)(q-1)。(欧拉函数) 选择一个e值作为密钥…...

基于springboot+vue的重庆旅游网(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

pymysql执行delete删除操作

视频版教程 Python操作Mysql数据库之pymysql模块技术 执行delete操作,雷同前面的update操作 from pymysql import Connectioncon Nonetry:# 创建数据库连接con Connection(host"localhost", # 主机名port3306, # 端口user"root", # 账户…...

25862-2010 制冷与空调用同轴套管式换热器

声明 本文是学习GB-T 25862-2010 制冷与空调用同轴套管式换热器. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了制冷与空调用同轴套管式换热器(以下简称"换热器")的术语和定义、基本参数、要 求、试验、检验规则、标…...

JetBrains 产品安装插件(plugins)的两种方式

安装分为在线、离线两种方式: 在线方式: File > Settings > Plugins 搜索插件 Install 即可 离线方式: 官网:https://plugins.jetbrains.com/ 搜索到插件后,点击 "Get",选择自己安装的…...

SOLIDWORKS二次开发

SOLIDWORKS是一套三维设计软件, 采用特征建模、变量化驱动可方便地实现三维建模、装配和生成工程图。SOLIDWORKS软件本身所具有的交互方式,可以使用户对已生成模型的尺寸、几何轮廓和相互约束关系随时进行修改, 而不需要编程。SOLIDWORKS软件本身的方程式可以实现简…...

Linux下压缩和解压缩

在Linux下,您可以使用多种命令来进行文件和目录的压缩和解压缩操作。以下是一些常见的压缩和解压缩命令: tar:tar命令可用于创建和提取tar压缩文件。例如,要创建一个名为archive.tar的.tar文件,可以使用以下命令&#…...

爬虫入门基础-HTTP协议过程

在进行网络爬虫开发之前,了解HTTP协议的基本过程是非常重要的。HTTP协议是Web通信的基础,也是爬取网页数据的核心。本文将为您详细介绍HTTP协议的过程,帮助您理解爬虫背后的网络通信机制。让我们一起来探索吧! 一、什么是HTTP协议…...

数据结构 第一章作业 绪论 西安石油大学

绪论第1章 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计…...

HTML5福利篇--使用Canvas画图

目录 一.Canvas元素 1.Canvas元素定义 2.使用JavaScript获取页面中的Canvas对象 二.绘制图形 1.绘制直线 2.绘制矩形 (1)rect() (2)strokeRect() (3)fillRect()和clearRect()函数 3.绘制圆弧 4.…...

基于Matlab实现图像目标边界描述

图像目标边界描述是图像处理中的一个重要问题。边界描述可以用于目标检测和识别、图像分割等应用。Matlab提供了强大的图像处理工具箱,可以方便地实现图像目标边界描述。本文介绍一种基于边缘检测的图像目标边界描述方法,并提供一个简单的案例源码。 文章…...

汽车电子——产品标准规范汇总和梳理(自动驾驶)

文章目录 前言 一、分级 二、定位 三、地图 四、座舱 五、远程 六、信息数据 七、场景 八、智慧城市 九、方法论 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、分级 《GB/T 40429-2021 汽车驾驶自动化分级》 《QC/T XXXXX—XXXX 智能网联汽车 自动驾…...

redis部署与管理

目录 一、关系数据库与非关系型数据库: 1. 关系型数据库: 2.非关系型数据库: 二、关系型数据库和非关系型数据库区别: (1)数据存储方式不同: (2)扩展方式不同&#xf…...

MySQL 事件

文章目录 1.简介2.事件调度器3.创建事件4.查看事件5.修改事件6.删除事件参考文献 1.简介 MySQL 事件(Event)事件是根据时间表运行的任务,类似于 Unix crontab 和 Windows 定时任务。 一个事件可调用一次,也可周期性地启动。它由…...

软件项目费用计算方法

计算软件项目的费用是项目管理的关键组成部分之一。费用计算方法可以帮助您确定项目的总成本,包括开发、测试、维护和其他相关费用。以下是一些常见的软件项目费用计算方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发…...

暗月中秋靶场活动writeup

前言 暗月在中秋节搞了个靶场活动,一共有4个flag,本着增长经验的想法参加了本次活动,最终在活动结束的时候拿到了3个flag,后面看了其他人的wp也复现拿到第四个flag。过程比较曲折,所以记录一下。 靶场地址 103.108.…...

【挑战开发100个项目 | 1. C语言学生管理系统】

本项目是一个简易的学生信息管理系统,用户可以通过命令行界面完成学生信息的增加、删除、修改、查询、排序和列表展示等功能。数据以txt文件形式存储,实现了数据持久化。项目采用模块化设计,具有较好的可读性和扩展性。适用于初学者学习c语言…...

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01 前言 在计算机安全领域,漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天,我们将深入探讨一个异常危险的漏洞,它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中,"exit&qu…...

Vue - 虚拟DOM的简单理解

目录 虚拟DOM虚拟DOM树生成流程 因为直接操作真实的 DOM 会比较影响效率。所以 vue 使用了 虚拟DOM(VNode)来描述要渲染的内容。 虚拟DOM 它是一个 js 对象,比如: const vnode {tag: "h1",children: [{ tag: undefi…...

TongWeb8下应用忙碌线程监控

问题 : 在系统运行过程中发现TongWeb进程占用CPU过高,需要分析是应用哪里引起的问题。 分析过程(仅限Linux环境): 1. 通过top命令查看TongWeb的java进程占用的CPU情况。 查看误区:不要以为java进程CPU占到398%就是高&#xff0…...