ORACLE内存结构

本文详细介绍了Oracle数据库的内存结构,包括UGA、PGA和SGA。SGA中包含Database Buffer Cache、Redo Log Buffer、Shared Pool等组件,分别用于缓存数据、存储重做日志和存放解析后的SQL等。PGA则是每个进程或线程的私有内存,而UGA存储会话状态。理解这些内存结构有助于优化数据库性能。
摘要由CSDN通过智能技术生成

          为了对ORACLE数据库有一个基本的了解,我们首先需要理解ORACLE的内存结构。
          可以大体上将ORALCE内存分为以下几类:

  • System Global area(SGA)
    一组共享内存结构,包含数据库实例的数据以及控制信息。
  • Program global area(PGA)
    进程或者线程独占的内存结构。当ORACLE进程启动时分配该内存。
  • User global area(UGA)
    与用户会话相关的内存结构。
  • Software code areas
    用于存储正在运行或可能运行的代码的内存区域。

          oracle整体内存结构如下图
avatar

UGA-User Global Area

          UGA是一块用来存储会话状态相关的内存区域。取决于是否通过shared server模式连接,它可能存在于SGA或者PGA中。

Shared Server – UGA存在于SGA中
Dedicated Server – UGA存在于PGA中

PGA-Program Global Area

          PGA是特定于操作系统进程或线程的内存。下图是dedicated server模式下PGA包含的区域——SQL工作区、私有SQL区和会话内存(在shared server模式下私有SQL区存在于SGA中):
avatar

私有SQL区

          存储变量的绑定信息以及运行时的内存结构。在dedicated server模式下该内存区域位于PGA中,但是在shared server模式下在SGA中。该内存区域由客户端管理该区域的创建,服务器端的OPEN_CURSORS参数限定可分配的上限。

  • persistent area
    存储变量绑定的值,当游标关闭时释放该区域内存。
  • run-time area
    当发起query execute请求时,首先会创建该区域,用于存储相关状态信息。例如,做全表扫描时,已检索的行数。
SQL工作区

          用于排序、位图合并、哈希连接等内存密集型的操作,这些操作会首先在SQL WORK AREA中进行,当分配的内存空间不足时将部分数据写入磁盘的TEMPSPACE表空间。

SGA-System Global Area

          SGA属于数据库实例的一部分。可通过V$SGASTAT查看各个内存区域的基本信息。

Database Buffer Cache

          用于缓存当前或最

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值