oracle 内存体系结构

1. 版本相关概念

11g “g” :stands for Grid 命名概念

Oracle 8i 9i(Internet)
Oracle 10g 11g(grid)
Oracle 12c 13c 18c(cloud)
  • i - 就是Internet了
  • grid - 格⼦,⽽放在计算机专业词汇⾥⾯就是⽹格计算
    ⽹格计算就是统⼀的把⽹络上各计算机的各种资源整合起来,虚拟成⼀个⼤的资源池,跟据各种的请求动态的分配计算机资源,消除资源的冗余以及资源利⽤程度不够的现象,达到申请与分配的均衡点。
  • c - 就是cloud的云计算;

2. 什么是Oracle数据库

  1. Oracle DataBase是⼀款关系型数据库管理系统,同类的产品还有MySQL,SQLServer等。

  2. 我们会把那个承载我们核⼼数据的系统笼统地成为数据库服务器。
    严格意义上来讲Oracle DataBase是由两个部分组成;
    实例+数据库=数据库服务(oracle server)
    实例:Oracle instance:⼀组后台进程和内存结构
    数据库:Oracle database:存放在操作系统上的物理文件

在这里插入图片描述

3. Data File 数据文件

  1. Oracle数据库中的表空间由⼀个或多个物理数据⽂件组成。数据⽂件只能与⼀个表空间和⼀个数据库相关联。
  2. Oracle数据库通过分配指定数量的磁盘空间和⽂件头所需的开销,为表空间创建⼀个数据⽂件。如果⽂件很⼤,这个过程可能会花费⼤量的时间。任何数据库中的第⼀个表空间总是SYSTEM表空间,因此Oracle数据库在创建数据库时⾃动为SYSTEM表空间分配,数据库的第⼀个数据文件。

4. Control File 控制文件

  1. 数据库控制⽂件是数据库启动和成功操作所必需的⼀个⼩型⼆进制⽂件。在数据库使⽤过程中,Oracle数据库会不断更新控制⽂件,因此⽆论何时打开数据库,它都必须能够⽤于编写。如果由于某种原因控制⽂件不可访问,那么数据库就不能正常运⾏。
  2. 每个控制⽂件只与⼀个Oracle数据库相关联。
  3. 控制⽂件包含有关实例访问所需的关联数据库的信息,这些信息在启动时和正常操作时都需要。控制⽂件信息只能通过Oracle数据库修改
alter database backup controlfile to trace as/u01/ctl01.bak‘;

5. Redo Log File 重做日志文件

  1. REDO条⽬(redo entries) 记录SQL语句本身,
  2. 以及执⾏后对数据库中某个⽂件某个块做的修改。包括DML、DD操作。

查看数据⽂件、控制⽂件、⽇志⽂件

col name for a50
SELECT name FROM v$datafile
union all
SELECT name FROM v$controlfile
union all
SELECT member FROM v$lofile;

6. Memory Structures 内存结构

  • oracle memory= SGA + PGA
  • SGA:system global area 系统全局区
  • 共享的:所有 server process 和 background process 共享。
  • PGA:program global area 程序全局区,
  • 私有的:每⼀个 server process 和 background process 拥有⾃⼰的 pga.
    在这里插入图片描述

查看分配给数据库的内存大小

SQL> show parameter memory 

查看数据库中分配给SGA的大小

SQL> show parameter sga      

查看当前系统物理内存大小

SQL> !free -m 

6.1 设置具体值

10g

sga_target设置具体值,开启共享内存⾃动管理 ASMM(SGA)
sga_targetSGA 可动态调整的尺⼨
sga_max_sizeSGA 最⼤值
pga_aggregate_targetPGA 累计的最⼤值

11g

memory_target设置具体值,开启内存⾃动管理 AMM(SGA 和 PGA ⾃动管理)。
memory_target内存可动态调整的尺⼨ sga_target + pga_aggregate_target
memory_max_targetoracle 服务器可使⽤最⼤内存⼤⼩(SGA+PGA)

6.2 SGA Global Area 系统全局区

SGA是⼀组共享内存结构,称为SGA组件,它包含⼀个Oracle数据库实例的数据和控制信息。SGA由所有服务器和后台进程共享。存储在SGA中的数据示例包括缓存的数据块和共享的SQL区域。

SGA 6 个基本组件:

  1. shared pool
  2. database buffer cache
  3. redo log buffer
  4. large pool
  5. java pool
  6. streams pool

6.3 Database Buffer Cache 系统高速缓存区

1.缓存数据
⽤于缓存从磁盘数据⽂件中读⼊的数据块,为所有⽤户共享。

服务器进程(server process)负责将数据⽂件的数据从磁盘读⼊到数据缓冲区中,当后续的请求需要这些数据时,如果在内存中找到,则不需要再从磁盘读取。

2.延迟写数据⽂件
对数据的修改在内存缓冲区中进⾏,减少写磁盘的次数,提⾼ I/O 能⼒。 数据缓冲区中被修改的数据块(脏块 dirty block)由后台进程 DBWR 将其写⼊磁盘。

数据缓冲区的⼤⼩对数据库的读取速度有直接的影响。
LRU list least recently used LRU-W list(write list / dirty list)

6.3.1 Database Buffer Cache的组成

Buffer Cache 有两个管理列表:写列表和最近最少使⽤的(LRU)列表。

Buffer Cache中的内存缓冲区分成三部分:

  1. free buffer 空闲缓冲区不包含任何有⽤的数据,数据库可以重⽤他们保存从磁盘
    读取的新数据
  2. dirty buffer 脏缓冲区,包含已修改但尚未写到磁盘的数据。
  3. pinned buffer 钉住/保留缓冲区,是⽤户会话当前正在激活使⽤的数据缓冲区

6.3. 2 Database Buffer Cache —— LRU 缓冲区清除算法

  1. 当Oracle数据库进程访问缓冲区时,该进程将缓冲区移动到LRU列表中最近使⽤的(most recently used MRU)端。随着越来越多的缓冲区不断地移动到LRU列表的MRU端,脏缓冲区就会逐渐⽼化到LRU列表的(least recently used LRU)端。
  2. 当Oracle数据库⽤户进程第⼀次需要特定的数据块时,它将在数据库缓冲区缓存中搜索数据。如果进程发现数据已经在缓存中(缓存命中),它可以直接从内存中读取数据。如果进程⽆法在缓存中找到数据(缓存丢失),它必须在访问数据之前将数据块从磁盘上的数据⽂件复制到缓存中的缓冲区中。通过缓存命中访问数据要⽐通过缓存丢失访问数据快。
  3. 在将数据块读⼊缓存之前,进程必须⾸先找到⼀个空闲缓冲区。该进程搜索LRU列表,⾄少从最近使⽤的列表末尾开始。进程搜索,直到找到⼀个空闲缓冲区,或者直到搜索缓冲区的阈值限制。
  4. 如果⽤户进程在搜索LRU列表时发现⼀个脏缓冲区,它会将该缓冲区移动到写列表并继续搜索。当进程找到空闲缓冲区时,它将数据块从磁盘读⼊缓冲区,并将缓冲区移动到LRU列表的MRU端。
  5. 如果Oracle数据库⽤户进程在没有找到空闲缓冲区的情况下搜索缓冲区的阈值限制,该进程将停⽌搜索LRU列表,并向DBW0后台进程发出信号,将⼀些脏缓冲区写到磁盘上。

Database Buffer Cache ——default pool
default pool 参数:db_cache_size

  • ⼀个标准块存放的内存空间⼤⼩,
  • SGA ⾃动管理时此参数 不⽤设置,使⽤
  • LRU 算法清理空间
  • 标准块⼤⼩(默认 8K)

nodefault pool:参数

  • db_nk_cache_size
    指定⾮标准块⼤⼩内存空间,2k、4k、16k、32k
  • db_keep_cache_size
    keep pool 存放经常访问的⼩表或索引等
  • db_recycle_cache_size
    使⽤后⽴即将数据从缓存中删除。⽤来存放偶尔做全表扫描的⼤表的数据。
    若没有分配keep和recycle 那么,任何数据库对象都将分配给默认冲区,该值的size根据DB_CACHE_SIZE初始化参数的值⽽定。

如需使⽤⾮标准块那么,需要进⾏以下配置

  1. 在buffer cache中为需要使⽤的⾮标准块配置相应的⾮标准块⾼速缓存
  2. 创建⾮标准块尺⼨的表空间。
  3. 将相应数据保存在⾮标准块存储空间上
  • 使⽤db_nk_cache_size

Database Buffer Cache ——命中率

  • 缓冲区读取操作⽐磁盘读取快得多。
  • 命中率是测量⽤户从buffer cache中访问到所需数据的时间百分⽐,不包括请求冲磁盘读取所需数据。
  • 命中率 = ( 1 - (物理读)/(逻辑读))* 100
    物理读:从磁盘读取数据
    逻辑读:从内存读取数据

6.4 Redo Log Buffer 重做⽇志缓冲区

  1. 重做⽇志缓冲区是SGA中的⼀个循环使⽤的缓冲区,它保存有关对数据库所做更改的信息。此信息存储在REDO条⽬中。REDO条⽬包含通过插⼊、更新、删除、创建、更改或删除操作重新构造或重做数据库更改所需的信息。
  2. REDO条⽬(redo entries)记的不仅是SQL语句本身,还包括执⾏后对数据库中某个⽂件某个块做的修改。包括DML、DDL操作。
  3. 重做条⽬占⽤缓冲区中连续的、顺序的空间。后台进程LGWR将重做⽇志缓冲区写到磁盘上的活动重做⽇志⽂件(或⽂件组)。
  4. 记录所有REDO条⽬,⽬的是⽤于数据库恢复。
  5. LGWR将REDO条⽬从Redo log buffer写⼊redo log file。那么服务器进程可以将新的⽇志项覆盖写⼊。因此数据库给Redo log buffer分配了较⼩的内存,⼤约5MB。
  6. 较⼤的Redo log buffer将减少redo log file 的IO操作,但是提交处理将花费较⻓的时间。
  7. 较⼩的Redo log buffer将会在成LGWR归于繁忙的进⾏写⼊,会造成系统CPU压⼒。
  8. nologging选项。该选项可以绕过redo log不进⾏记录。减少资源争用。

7. Shared Pool(共享池)

共享池是对 SQL、PL/SQL 程序进⾏语法分析、编译、执⾏的缓存内存区域,是SGA保留的内存区域

7.1 共享池结构

7.1.1 库高速缓存

主要用于共享SQL区(所有用户共同使用)和私有SQL区

  • 共享SQL区作用:存放最近用过的SQL语句,文本,执行计划。当系统执行命令时,系统会先检索库高速缓存区,每条之前执行过的命令会生成SQL_ID(哈希算法,),通过对比SQL_ID.找到之前已经执行过的命令,从而提高系统执行效率。找到了,称之为软解析,没找到,系统则开始解析命令,称之为硬解析。

【SELECT xxx from xxxx where xxx=‘aabb’ ;和SELECT xxx from xxxx where xxxx=‘aabc’;数据库认为是两个不同的命令,会执行硬解析。】
【SELECT xxx from xxxx where xxx=’&aabb’; 数据库认为一个命令,会执行软解析】

  • 私有SQL区:存放SQL语句中的绑定变量,环境,会话等信息。这是执行该用户的私有信息,其他用户无法共享这些信息

7.1.2 数据字典高速缓存

  • 用于存放Oracle系统内部管理所需要的数据字典信息,如用户、数据对象、权限等。
  • 当执⾏⼀段SQL代码时:Oracle ⾸先需检查你是否具有执⾏该操作的权限。在Data Dictionary Cache中查看是否有相关信息, 若⽆,Oracle把信息冲数据字典表读到Data Dictionary Cache中
  • 数据字典未命中 ——- 即 Oracle未在Data Dictionary Cache中发现需要的数据,那么需要花费额外的成本进行数据处理没有直接调整Library cache和Data Dictionary Cache⼤⼩的⽅法,只能通过增加或减少Shared pool。

共享池的内存空间大小是可以动态改变的,一般通过修改参数SHARED_POOL_SIZE值来实现(空间不是越大越好,因为系统内存资源是有限的,而且操作系统本身也要消耗一定的内存空间)
例:>alter system set shared_pool_size=30m;

7.2 shared_pool_size 参数

  1. 查看参数,参数值为 0,此时系统中 memory_target 参数设置了具体⼤⼩,使⽤了内存⾃动管理
SQL> show parameter shared_pool
NAME TYPE VALUE
------------------------------------ ----------- -----------
shared_pool_size big integer 0
  1. resizeable 是YES说明可以动态调整
SQL> select name,bytes/1024/1024 M,resizeable from v$sgainfo;
NAME M RES
------------------------------ ---------- ---
Fixed SGA Size 2.15324402 No
Redo Buffers 2.26171875 No
Buffer Cache Size 308 Yes
Shared Pool Size 152 Yes
Large Pool Size 8 Yes
Java Pool Size 4 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size 0 Yes
Granule Size 4 No
Maximum SGA Size 796.417969 No
Startup overhead in Shared Poo 71.6031723 No

7.2.1 设置shared_pool_size大小

  1. 共享池空间过⼩,硬解析时 library cache 空间不⾜,会按照 LRU 算法清理出⼀部分执⾏计划。

  2. 在使⽤ oracle 共享内存⾃动管理或⾃动内存管理模式下,如设置 memory_target 参数后, 具体池⼤⼩ shared_pool_size 可以不设置,10g、11g 默认为 0,由数据库根据系统负载情况动态调整共享池内存⼤⼩。

建议:在启⽤了⾃动内存管理的系统中设置此值,作为初始值和下限值。

SQL > alter system set shared_pool_size=161M;
SQL > show parameter shared_pool_size
查看:
SQL >select name,bytes/1024/1024 M,resizeable from v$sgainfo where name='Shared Pool Size';

8. SQL在Oracle内部的处理流程

8.1 sql解析

SQL处理的第⼀阶段就是SQL解析。当应⽤程序发出SQL语句时,该应⽤程序向数据库发出⼀个解析调⽤,以准备执⾏该语句,解析调⽤会打开或创建⼀个游标,它是⼀个对特定于会话的私有SQL区的句柄,其中包含了已分析的SQL语句和其他处理信息。游标和私有SQL区位于PGA中。

解析调⽤期间,数据库会执⾏以下检查:

  • 语法检查
  • 语义检查 --对象和列是否存在
  • 共享池检查
    解析⼀个SQL语句时,数据库搜索共享SQL区,以查看是否存在⼀个现成的已分析的语句具有相同的哈希值。SQL语句的哈希值有别于下列值:
    • 该语句的内存地址值(V$sql的address字段值)

    • 该语句执⾏计划的哈希值(V$SQL_PLAN视图的plan_hash_value字段值)

      基于所提交语句的类型和哈希检查的结果,解析操作分为以下类别:

      • 软解析
        任何不适硬解析的解析都是软解析。如果提交的语句与在共享式中某个可重⽤SQL语句相同,则数据库将重⽤该现有代码。重⽤代码也称为库缓存命中。⼀般的,软解析⽐硬解析更可取,因为数据库可以跳过优化和⾏源⽣成步骤,⽽直接进⼊到直⾏阶段。下图是在专⽤服务器体系结构中,⼀个update语句的共享池检查的简化表示。
      • 硬解析
        如果数据库不能重⽤现有代码,则它必须⽣成应⽤程序代码的⼀个新的可执⾏版本,次操作称为⼀个硬解析,或库缓存未命中。数据库对DDL始终执⾏硬解析。
        在硬解析期间,数据库多次访问库缓存和数据字典缓存以检查数据字典。当数据库访问这些区域时,它在所需对象上使⽤⼀个叫做闩锁的串⾏化设备,以便它们的定义不糊被更改。闩锁的争⽤会增加语句的执⾏时间,并降低并发。

8.2 SQL优化, 结合统计信息

查询优化是选择执⾏SQL语句的最有效⼿段的过程。数据库对查询的优化基于对正在访问的实际数据收集的统计信息。优化器使⽤⾏数、数据集⼤⼩ 和 其他因素来⽣成各种可能的执⾏计划,并为每个计划分配⼀个成本值。数据库会使⽤具有最低成本的计划。

数据库对每个唯⼀的DML语句必须⾄少执⾏⼀次硬解析,并在硬解析期间执⾏优化。DDL永远不会被优化,除⾮他包括需要优化的DML组件,如⼦查询。

8.3 SQL行源生成生成执行计划

行源⽣成器是⼀种软件,它从优化器接受经过优化的执⾏计划并⽣成⼀个称为查询计划的迭代计划,以供数据库的其余部分使⽤。查询计划采⽤组合多个步骤的形式,每⼀步返回⼀个⾏集。该集合中的⾏可以在下⼀步被使用,或在最后⼀步返回给发出SQL语句的应⽤程序

行源就是执⾏计划中的某⼀步多返回的⾏集,且带有能够迭代该⾏集的控制结构,⾏源可以是表、视图、或连接操作或分组操作的结果。

行源⽣成器产⽣⼀个⾏源树,它是⼀个⾏源的集合。(就是我们看到的执⾏计划)

8.4 SQL执行

在执⾏期间,SQL引擎执⾏⾏源⽣成器所产⽣的数中的每个⾏源。这⼀步是在DML处理中唯⼀的强制性步骤。在执⾏计划中,我们经常看到就是的⼀个执⾏树,显示了⾏源从⼀部流向另⼀步。

8.5 分析表 查看统计信息

SQL> analyze table emp compute statistics;
Table analyzed.
SQL> select num_rows , blocks , avg_row_len , empty_blocks
  2 from user_tables
  3 where table_name='EMP';
  NUM_ROWS      BLOCKS  AVG_ROW_LEN       EMPTY_BLOCKS
---------- ---------- ----------- ------------
  17                              5        37                                37

8.6 查看软解析比率

软件系⽐率可以查看AWR报告,也可以使⽤SQL进⾏能查询

>col name for a30
>select * from v$sysstat where name like%parse%;
STATISTIC# NAME CLASS VALUE STAT_ID
---------- ------------------------------ ---------- ---------- ----------
 264 ADG parselock X get attempts 1 0 564381705
 265 ADG parselock X get successes 1 0 3808229129
 622 parse time cpu 64 2578 206905303
 623 parse time elapsed 64 3595 1431595225
 624 parse count (total) 64 158817 63887964
 625 parse count (hard) 64 25893 143509059
 626 parse count (failures) 64 467 1118776443
 627 parse count (describe) 64 248 469016317
8 rows selecte

8.7 OLAP 和 OLTP

OLAP 联机分析处理系统 On-Line Analytical ProcessingSQL 执⾏的次数少,涉及数据量⼤。
OLTP 联机事务处理系统 On-Line Transaction Processing SQL 执⾏次数多,涉及数据量⼩,客户要求响应时间短

9. 其他资源池

9.1 Large Pool(大型池)

数据库管理员可以配置⼀个称为⼤池的可选内存区域,为:

  • ⽤于共享服务器和Oracle XA接⼝的会话内存(⽤于事务与多个数据库交互的地⽅)
  • I / O服务器进程
  • Oracle数据库备份和恢复操作
    • ⽤于Oracle数据库备份和恢复操作、⽤于I/O服务器进程和⽤于并⾏缓冲区的内存被分配在几百kb的缓冲区中。⼤池⽐共享池更能满⾜更⼤的内存请求。
    • 大池没有LRU列表。它与共享池中的保留空间不同,共享池中的保留空间使⽤与从共享池中分配的其他内存相同的LRU列表。
    • 通过LARGE_POOL_SIZE查询

9.2 Java Pool

Java池内存在服务器内存中⽤于JVM中所有特定于会话的Java代码和数据。Java池内存的使⽤⽅式不同,具体取决于Oracle数据库运⾏的模式。

9.3 Streams Pool(流池)

stream 技术是为了在不同数据库之间共享数据。是为了⽀持实例中的streams活动⽽分配的内存

10. 连接模式

专⽤、共享连接模式
server process连接server 是有两种模式

  • 专⽤模式 :user process 与 server process 之间⼀对⼀的关系
  • 共享模式 :user process 与 server process 之间多对一的关系

10.1 专用连接(默认)

对专⽤连接来说,⽤户在客户端启动了⼀个应⽤程序.
ps -ef | grep LOCAL | wc -l
专⽤连接的 UGA 在 PGA 中。Oracle 缺省采⽤专⽤连接模式。

10.2 共享连接(默认)

多个 user process 共享⼀个 server process。它通过调度进程(dispatcher)与共享服务器连 接,共享服务器实际上 就是⼀种连接池机制(connectionpooling),连接池可以重⽤已有的超时连接,服务于其它活动会话。但容易产⽣锁等待。此种连接⽅式现在已经很少⻅。

11. 程序全局区(PGA)

PGA是⼀个内存区域,它包含服务器进程的数据和控制信息。它是在启动服务器进程时由Oracle数据库创建的非共享内存。对PGA的访问是服务器进程独有的。每个服务器进程有⼀个PGA。后台进程也分配它们自己PGA。所有单个PGA使⽤的总内存称为总实例PGA内存,⽽单个PGA的集合称为总实例PGA,或者简称为实例PGA。您使⽤数据库初始化参数来设置实例PGA的⼤⼩,⽽不是单个PGA。

根据不同类型的数据库实例,PGA存储内容不同。不过⼀般来说,PGA分为以下两⽅⾯:

  1. 会话内存:是分配给存储会话变量(登录信息)和与会话相关的其他信息。 (对于共享服务器,会话内存是共享的,⽽不是私有的。)
  2. 私有SQL区域:包含绑定变量值、查询执⾏状态信息和查询执⾏⼯作区域等数据。发出SQL语句的每个会话都有⼀个私有SQL区域私有SQL区域的位置取决于为会话建⽴的连接类型。如果会话通过专⽤服务器连接,则私有SQL区域位于服务器进程的PGA中。但是,如果会话通过共享服务器连接,那么私有SQL区域的⼀部分将保留在SGA中。

12. 用户全局区(UGA)

⽤户全局区(User Global Area)简称 UGA,存放与⽤户会话相关信息,如登录信息、会话状态等。

  • 专⽤服务器模式下,UGA 在 PGA 中;
  • 共享服务器模式下,UGA 在 SGA 中⼤池(large pool) ,没有⼤池在共享池(shared pool)

13. 系统五大后台常驻进程

ORACLE进程是一组运行与Oracle服务器段的后台程序,是Oracle实例的重要组成部分。这组后台进程有若干个,他们分工明确——分别完成不同的系统功能

13.1 数据写入进程(DBWR)

主要任务是将内存的’脏‘数据块回写到数据文件中。所谓的‘脏’数据是指高速缓冲区中被修改的数据块。

修改发生点:

  • 当用户执行插入或修改等操作时,需要将‘新数据’写入高速数据缓冲区。如果空间不足,进程会强行将之前的‘脏’数据写入,以腾出空间。
  • 检查点进程启动后,强制要求DBWR写入‘脏’数据
  • 当‘脏’数据块在高速数据缓冲区中存放超过三秒钟,DBWR会自动启动,将某些脏数据写入。

13.2 检查点进程(CKPT)

检查点进程可以看作一个事件,当检查点事件发身时,CKPT会要求DBWR 将某些‘脏’数据块回写到数据文件。

13.3 日志写入进程(LGWR)

日志写入文件进程用户将日志缓冲区中的数据写入中作日志文件。Oracle系统首先将用户所做的修改日志信息写入日志文件,然后再将修改结果写入数据文件。

13.4 系统监控进程(SMON)

系统监控进程是在数据库系统启动时执行回复工作的强制性进程。比如,在并行服务器模式下。释放用户所用的资源。

13.5 进程监控进程(PMON)

进程监控进程用于监控其他进程的状态,当有进程启动失败时,PMON会清除失败的用户进程,释放用户进程所用的资源。

13.6 其他进程(other)

除去五大主要进程外,系统还有很多辅助进程,比如锁进程(LKCN),恢复进程(RECO),调度进程(DNNN),快照进程(SNPN)

13.7 MMON and MMNL

可管理性监控流程manageability monitor process (MMON)执⾏与⾃动⼯作负载存储库( Automatic Workload Repository AWR)相关的任务。
可管理性监控流程 manageability monitor lite process (MMNL)将统计信息从SGA中的活动会话历史(ASH)缓冲区写到磁盘。当ASH缓冲区满时,MMNL写⼊磁盘。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库的内存结构包括以下几个主要组件: 1. System Global Area (SGA):SGA是Oracle数据库实例的关键部分,它存储了在数据库实例运行期间需要共享的数据和控制结构。SGA包括以下主要组件: - 数据库缓冲区(Database Buffer Cache):用于存储从磁盘读取的数据块以及经常访问的数据块。 - 共享池(Shared Pool):存储共享SQL和PL/SQL代码的内存区域,包括共享SQL区和共享游标区。 - 重做日志缓冲区(Redo Log Buffer):用于存储已提交的事务的重做日志记录,以支持数据库恢复和故障恢复。 - 大池(Large Pool):用于存储大型内存分配,例如排序操作和并行查询的I/O缓冲区。 - Java池(Java Pool):用于存储Java虚拟机所需的内存。 2. Program Global Area (PGA):PGA是每个后台进程或服务器进程的私有内存区域。每个会话都有自己的PGA,用于存储会话特定的数据和控制结构,例如排序和连接操作的临时数据。 3. Large Pool:大池是一块SGA内存区域,用于处理额外的大内存分配需求,例如备份和恢复操作,以及并行查询的I/O缓冲区。 此外,Oracle数据库还有其他一些内存结构,如Java池(用于存储Java虚拟机所需的内存)、Streams池(用于支持数据流复制)、共享服务器连接池(用于管理共享服务器进程的内存)等。这些内存结构共同协作,支持数据库实例的正常运行和性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值