千家信息网

Oracle的内存管理方式

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容主要讲解"Oracle的内存管理方式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle的内存管理方式"吧!Oracle 内存管理方式ora
千家信息网最后更新 2024年11月23日Oracle的内存管理方式

本篇内容主要讲解"Oracle的内存管理方式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle的内存管理方式"吧!

Oracle 内存管理方式

oracle11g新出参数MEMORY_MAX_TARGET 和 MEMORY_TARGET进行自动管理PGA 和SGA 称之为 自动化内存管理(Automatic Memory Management,AMM。

MEMORY_MAX_TARGET :MEMORY_TARGET所能设定的最大值。非动态可调。

MEMORY_TARGET :操作系统上 Oracle 所能使用的最大内存值。动态参数,MEMORY_TARGET 是PAG 和SGA的总和。memory_target 为 0 是手动管理,非0为自动管理。

如果指定了memory_target 而没有指定memory_max_target 重启后,memory_max_target 和memory_target 大小相等;

如果指定了memory_max_target 而没有指定 memory_target重启后memory_target 为0;

当设置 memory_max_target < memory_target 时,则重启后报错(ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET)

sga_max_size : sga_max_size 是sga的最大值 。

sga_target : sga_target 是自动和手段管理; sga_target 为0 是手动管理,非0 是自动管理

oracle 11g 引入参数mymory_max_target 和memory_target 就是oracle的新特性自动内存管理,AMM 的引入, 组合出来有 5 种内存管理形式.如下:

自动内存管理(AMM): memory_target=非0,是自动内存管理 ,如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

自动共享内存管理(ASMM): 在memory_target=0 and sga_target=非0 是自动内存管理

手工共享内存管理: memory_target=0 and sga_target=0 指定 share_pool_size 、db_cache_size 等 sga 参数

自动 PGA 管理: memory_target=0 and workarea_size_policy=auto and PGA_AGGREGATE_TARGET=值

手动 PGA 管理: memory_target=0 and workarea_size_policy=manal 然后指定 SORT_AREA_SIZE 等 PGA 参数,一般不使用手动管理PGA;

=========================================================================

racle的内存分为两个部分。一个是SGA(system global area),一个是PGA(program global area)。所谓的内存管理,就是对这两部分区域进行管理。oracle的内存管理经理了如下发展:

oracle 9i PGA自动管理,SGA手动管理

oracle10g PGA自动管理,SGA自动管理

oracle11g PGA,SGA统一自动管理

先看9i时期的PGA自动管理,SGA手动管理

这时期PGA管理有两个选择,手动和自动。

手动时,设置WORKAREA_SIZE_POLICY为MANUAL, 设置各种*_AREA_SIZE的值比如SORT_AREA_SIZE_HASH_AREA_SIZE就可以实现手动PGA管理。

自动时,设置WORKAREA_SIZE_POLICY为AUTO,设置PGA_AGGREAGATE_TARGET的值,则为自动PGA管理。

这时期SGA的管理只可以手动管理,但是相比之前有了进步,可以动态的管理。

再看10g时期的PGA自动管理,SGA自动管理

这时期PGA和9i一样,都可以手动和自动。

这时期的SGA则有了进步,可以手动管理,也增加了自动管理的选择。

设置SGA_TARGET,就可以实现自动SGA管理。

现在看11g时期的PGA,SGA统一自动管理

这时期的内存管理向前兼容。

PGA可以手动,自动管理

SGAK也可以手动,自动管理

但是有了一个更方便的特性,就是把PGA,SGA的自动整合到一起,通过MEMORY_TARGET来管理。 这时有了两个参数MEMORY_TARGET,MEMORY_MAX_TARGET.有了这两个参数,就可以把PGA,SGA作为一个整体管理。

有一些要注意的地方:

1.如果设置了MEMORY_TARGET的同时还设置了SGA_TARGET,PGA_TARGET 怎么办呢?这时候,SGA_TARGET和PGA_TARGET的值如果小于MEMORY_TARGET,那么oracle就会把他们作为SGA,和PGA的最小值,如果他们比MEMORY_TARGET还大,那么oracle就会报错。

2.PGA是跟每一个oracle server 进程相关的,所以WORKAREA_SIZE_POLICY应该是可以设置在session级别,也可以设置在system级别。

3. 几个视图比较有用,V$MEMORY_DYNAMIC_COMPONENTS会展示动态调整的内存组件大小。 V$MEMORY_RESIZE_OPS展示了最近的800条SGA调整记录。

=========================================================================

Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整;

Oracle 10g引入sga_target,可以自动对SGA进行调整;

Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。

自动内存管理是用两个初始化参数进行配置的:

MEMORY_TARGET:动态控制SGA和PGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的。它不能超过MEMORY_MAX_TARGET参数设置的大小。默认值是0。

MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值。使用动态内存管理时,SGA_TARGET和PGA_AGGREGATE_TARGET代表它们各自内存区域的最小设置,要让Oracle完全控制内存管理,这两个参数应该设置为0。

memory_max_target是一个非动态参数,不能在memory范围动态改变,只能通过指明 scope=spfile这个条件来达到数据库在下次启动后让改变生效的目的。但是memory_target这个参数是可以动态调节的...也就是说不需要重新启动DB,就可以让其生效。

MEMORY_MAX_TARGET 是设定Oracle能占OS多大的内存空间;SGA_MAX_SIZE是Oracle SGA 区最大能占多大内存空间. 、

10g 的sga_max_size 是动态分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,是根据Oracle 运行状况来重新分配SGA 各内存块的大小。PGA在10g中需要单独设定。

11g MEMORY_MAX_TARGET 参数包含SGA和PGA两部分。

在手动创建数据库时,只需要在创建数据库之前设置合适的MEMORY_TARGET和MEMORY_MAX_TARGET初始化参数。

下面来看看在11g 中Memory_target 设置和不设置对SGA/PGA 的影响:

A :如果 Memory_target 设置为非 0 值

(下面有四种情况来对 SGA 和 PGA 的大小进行分配)

1 : sga_target 和 pga_aggregate_target 已经设置大小如果 Oracle 中已经设置了参数 sga_target 和 pga_aggregate_target ,则这两个参数将各自被分配为 最小值最为它们的目标值。

Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和memory_max_size 一致。

2 : sga_target 设置大小, pga_aggregate_target 没有设置大小

那么 pga_aggregate_target 初始化值 =memory_target-sga_target

3 : sga_target 没有设置大小, pga_aggregate_target 设置大小

那么 sga_target 初始化值 =memory_target-pga_aggregate_target

4 : sga_target 和 pga_aggregate_target 都没有设置大小 Oracle 11g中对这种 sga_target 和 pga_aggregate_target 都没有设定大小的情况下, Oracle 将对这两个值没有最小值和默认值。 Oracle 将根据数据库 运行状况进行分配大小。 但在数据库启动是会有一个固定比例来分配:

sga_target =memory_target *60%

pga_aggregate_target=memory_target *40%

B :如果 Memory_target 没有设置或 =0 (在 11g 中默认为 0 )

11g中默认为 0 则初始状态下取消了 Memory_target 的作用,完全和 10g 在内存管理上一致,完全向下兼容。

(也有三种情况来对 SGA 和 PGA 的大小进行分配)

1 : SGA_TARGET 设置值,则自动调节 SGA 中的 shared pool,buffer cache,redo log buffer,java pool,larger pool等内存空间的大小。 PGA 则依赖 pga_aggregate_target 的大小。 sga 和 pga 不能自动增长和自动缩小。

2 : SGA_target 和 PGA_AGGREGATE_TARGET 都没有设置

SGA 中的各组件大小都要明确设定,不能自动调整各组建大小。 PGA 不能自动增长和收缩。

3 : MEMORY_MAX_TARGET 设置 而 MEMORY_TARGET =0 这种情况先和 10g 一样,不做说明

在11g 中可以使用下面看各组件的值

SQL> show parameter target

NAME TYPE VALUE

------------------------ ----------- ---------------------

archive_lag_target integer 0

db_flashback_retention_target integer 1440

fast_start_io_target integer 0

fast_start_mttr_target integer 0

memory_max_target big integer 1024M

memory_target big integer 1024M

pga_aggregate_target big integer 0

sga_target big integer 0

如果需要监视 Memory_target 的状况则可以使用下面三个动态试图:

V$MEMORY_DYNAMIC_COMPONENTS

V$MEMORY_RESIZE_OPS

v$memory_target_advice

使用下面 Command 来调节大小:

SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE;

SQL>ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE;

SQL>ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;

SQL>ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE ;

到此,相信大家对"Oracle的内存管理方式"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

管理 内存 大小 参数 手动 动态 两个 时期 分配 调整 最大 数据 数据库 方式 最小 就是 情况 部分 特性 状况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全信息安全目标 如何用手机访问数据库 六安金狮网络技术 无线传感器网络技术原理答案 网络安全四大方面 数据库所有列代码 河南惠普服务器虚拟化定制服务器 函数怎么检查重复数据库 连接版本服务器失败1009 南京的数据库 世界最牛手机服务器 无锡新品联想服务器安装 网络安全工程师含金量培训机构 网络安全三级认证费用 tidb数据库查询tps 怪物猎人 世界捏脸数据库 四川成都网络技术学校 服务器管理与维护是什么专业的 陕西省信息与网络安全 西安旺事达互联网科技有限公司 信息系统与数据库技术知识 掌股科技网络技术有限公司 计算机网络技术专业5年 服务器品牌前十大排名国内 南京app软件开发公司在线咨询 如何使连接不用网络安全密钥 小程序的网络安全 三亚科技创新互联网基地 网络安全工程师含金量培训机构 软件开发可以读研究生么
0