Oracle 自动内存参数依赖性

图例:在该图中使用了以下参数名称缩写:

MT = MEMORY_TARGET

MMT = MEMORY_MAX_TARGET

ST = SGA_TARGET

PAT = PGA_AGGREGATE_TARGET

SMS = SGA_MAX_SIZE

MEMORY_TARGET 设置为非零值时:

如果设置了 SGA_TARGET 和 PGA_AGGREGATE_TARGET,则会分别将它们当作 SGA 大小和 PGA 大小的下限值。MEMORY_TARGET 可以采用从 SGA_TARGET + PGA_AGGREGATE_TARGET 到 MEMORY_MAX_SIZE 的值。

如果设置了 SGA_TARGET 但未设置 PGA_AGGREGATE_TARGET,则仍会自动优化这两个参数。PGA_AGGREGATE_TARGET 将初始化为 (MEMORY_TARGET-SGA_TARGET) 的值。

如果设置了 PGA_AGGREGATE_TARGET 但未设置 SGA_TARGET,则仍会自动优化这两个参数。SGA_TARGET 将初始化为 MEMORY_TARGET-PGA_AGGREGATE_TARGET 和 SGA_MAX_SIZE(如果用户设置了该参数)中的最小值,并自动优化子组件。

如果未设置任何参数,则无需任何下限值或默认值即可自动优化这两个参数。会在初始化过程中,将服务器的总内存以固定的比率分配给 SGA 和 PGA。根据该策略,将在启动时为 SGA 分配 60% 的内存,为 PGA 分配 40% 的内存。

如果未设置 MEMORY_TARGET 或者将其显式设置为 0(默认值为 0):

如果设置了 SGA_TARGET,则数据库将仅自动优化 SGA 的子组件的大小。PGA 的自动优化与是否显式设置 PAG 无关。但是,不会自动优化整个 SGA (SGA_TARGET) 和 PGA (PGA_AGGREGATE_TARGET),即不自动增长或收缩。如果 SGA_TARGET 和 PGA_AGGREGATE_TARGET 都未设置,则将采用当前使用的策略;自动优化 PGA,不自动优化 SGA,需要显式设置某些子组件的参数 (SGA_TARGET)。

如果仅设置了 MEMORY_MAX_TARGET,则使用初始化文本文件进行手动设置时,MEMORY_TARGET 默认为 0。SGA 和 PGA 的自动优化行为默认为 10g R2 的行为。

如果用户未设置 SGA_MAX_SIZE,则当用户设置了 MEMORY_MAX_TARGET 时,会在内部将 SGA_MAX_SIZE 设置为 MEMORY_MAX_TARGET(与用户是否设置了 SGA_TARGET 无关)。

在初始化参数文本文件中,如果省略了 MEMORY_MAX_TARGET 行,并包含了 MEMORY_TARGET 的值,则数据库会自动将 MEMORY_MAX_TARGET 设置为 MEMORY_TARGET 的值。如果省略 MEMORY_TARGET 行,并包含 MEMORY_MAX_TARGET 的值,则 MEMORY_TARGET 参数默认为 0。启动后,如果 MEMORY_TARGET 未超过 MEMORY_MAX_TARGET 值,则可以将其动态更改为非零值。

时间: 2024-10-04 01:46:56

Oracle 自动内存参数依赖性的相关文章

Oracle 自动内存管理 SGA、PGA 详解

ASMM自动共享内存管理: 自动根据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 [email protected]>show parameter sga NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ lock_sga                  

设置ORACLE自动内存管理

文章参考:ORACLE 11g官方文档[Managing Memory] 前言:之前搭建数据库集群环境后,现场的维护人员不知何时改为了手动内存管理,且参数设置存在不合理,导致客户plsql执行报错,如下所示: 查看数据库日志,有如下提示: Wed Mar 15 00:15:08 2017 Errors in file /app/oracle/diag/rdbms/resdb/resdb1/trace/resdb1_ora_12320832.trc  (incident=441054): ORA-

修改oracle内存参数

Linux主机16g内存,修改oracle数据库内存参数: 1.编辑/etc/fstab文件:针对tmpfs行将defaults改成defaults,size=12g(千万注意格式,不能出现错误) 修改贡献内存参数后,reboot重启服务器. 2.sqlplus登录oracle数据库,备份参数文件: 以下语句备份参数文件(必须): SQL>create pfile='/u01/app/oracle/pfile20161625.ora' from spfile; 3.Show parameter

Oracle内存参数配置及版本问题

Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存的错误(如ORA-04030.04031错误)都是十分令人头疼的问题.查阅资料了解到,ORA-04030的问题一般是PGA过度分配造成的(对应的操作是sort/hash_join).在Oracle中pga_aggregate_target指定了所有session总共使用的最大PGA上限.经测试验证,

Oracle 内存参数调优设置

Oracle 数据库系统中起到调节作用的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些 初始化参数以优化Oracle系统. 1 主要系统参数调优介绍 2 系统内存参数的分配 2.1 Oracle 实例= 内存结构 + 进程结构 内存结构 = SGA + PGA SGA(系统全局区): 用户存储数据库信息的内存区,该区域为数据库进程所共享.它包含服务器的数据和控制信息,主要包含高速数据缓冲区.共享池.重做日志缓存区.Java池,大型池等内存结构. SGA的设置,理论上SGA的大小应该占

Oracle实例内存(SGA和PGA)调整

一.名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区).  共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息. (3)缓冲

设置数据库为自动内存管理

设置数据库自动内存管理主要是设置两个参数: memory_max_target memory_target 如果这两个参数设置为0说明数据库内存采用手动管理,反之则为自动管理. 关闭数据库. SQL> startup nomount ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 6384M --这里之所以报错是我之前alter system set MEMORY_TARGET='153

oracle 初探内存结构

数据库的存储机构 分为 逻辑存储结构 和 物理存储结构 逻辑存储结构: 数据库.表空间.段.区.块         物理存储结构: 数据库.控制文件.数据文件.初始化参数文件.OS块等. 一个区只能在一个数据文件中,一个段中的各个区可以分别在多个数据文件中.组成区的块是连续的.         SGA (SYSTEM Global Area )系统全局区 [buffer cache]数据高速缓存是(由初始化参数DB_CACHE_SIZE指定大小.工作原理和过程是 LRU(最近最少使用 Least

关于oracle11G的自动内存管理MEMORY_TARGET和MEMORY_MAX_TARGET

自动内存管理是用两个初始化参数进行配置的: MEMORY_TARGET:动态控制SGA和PGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的.它不能超过MEMORY_MAX_TARGET参数设置的大小.默认值是0. MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值. 使用