Oracle内存管理

概念

为满足数据库的需求,通过内存管理来维护 Oracle 实例内存结构的最优大小。Oracle数 据库基于与内存相关的初始化参数设置来管理内存。

在这里插入图片描述

内存管理方式

自动内存管理

自动内存管理(Automatic memory management) 指定实例内存的目标大小,自动管理SGA内存和实例PGA内存。数据库实例自动优化到这个目标内存大小,根据需要在 SGA 和 PGA 实例之间重新分配内存。( memory_target)、Oracle推荐对SGA和PGA内存总大小 小于或等于4GB的数据库进行自动内存管理。

在实现自动内存管理时,只需要设置目标内存大小初始化参数(MEMORY_TARGET)和可选的最大内存大小初始化参数(MEMORY_MAX_TARGET),根据MEMORY_TARGET的值,会自动分配内存给给SGA和PGA,当需求发生变化时,也会动态调整SGA和PGA的值。

启用自动内存管理

1.计算memory_target的最小值
确定sga_target和pga_aggregate_target的当前大小
show parameter sga_target;
show parameter pga_aggregate_target;

确定自数据库启动以来分配的最大实例PGA(以兆字节为单位):
select value/(1024*1024) max_allocated_MB from v$pgastat where name = ‘maximum PGA allocated’;

计算MEMORY_TARGET的最小值
MEMORY_TARGET >= SGA_TARTGET + MAX(PGA_AGGREGATE_TARGET,maximum PGA allocated)

2.设置最大值
target_memory确定一个值,可以是最小值,如果有足够的内存可以使用,也可以设置最大值
MEMORY_MAX_TARGET初始化参数,决定分配给数据库的最大内存量(SGA+PGA的最大值)
MEMORY_MAX_TARGET参数的设置大于等于MEMORY_TARGET

自动共享内存管理

自动共享内存管理(Automatic shared memory management) 设置一个 SGA 的目标大小,然后设置 PGA 总目 标大小,SGA_TARGET初始化参数指定一个实例可用的SGA内存总量,Oracle数据库会自动在各种SGA组件之间分配这些内存,以确保最有效的内存利用率。如果数据库使用的参数文件是SPFILE,数据库会记住实例关闭时自动调优的SGA组件的大小。因此,数据库实例不需要在每次实例启动时再次学习工作负载的特征。实例可以从前一个实例的信息开始,并继续评估上一次关闭时停止的工作负载。

启动自动共享内存管理
通过将SGA_TARGET初始化参数设置为非零值,可以启用自动共享内存管理特性。该参数设置SGA的总大小。
如: alter system set sga_target=100M;

当设置SGA_TARGET时,一些SGA组件会自动调整大小
The shared pool SHARED_POOL_SIZE
The large pool LARGE_POOL_SIZE
The Java pool JAVA_POOL_SIZE
The buffer cache DB_CACHE_SIZE
The Streams pool STREAMS_POOL_SIZE

1.获取sga_target的值
select (
(select sum(value) from v

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值