oracle 11G自动内存管理

oracle11G以后引入自动内存管理
因为我们只需要设置memory_target即可,
甚至我们不需要在设置如下参数,11g如下参数一般默认都为0
sga_target
   shared_pool_size
 
   db_cache_size = db_block_size*db_block_buffer
   db_keep_cache_size
   db_recycle_cache_size

   java池,流池等

pga_aggregate_target


例如:
操作系统内存大小64G,
注:更改前spfile参数文件之前,做好备份,已防万一,
SQL> create pfile from spfile;

文件已创建。

SQL> alter system set memory_max_target=50G scope=spfile;

使oracle内存使用限度控制在50G以下,因为memory_max_target是非动态参数,设置在下一次重启后生效

注:对于memory_target参数在实例运行时可以根据负载实时调整,所调整值为当前分配给数据库的内存大小,立即生效,但必须小于等于memory_max_target。一个合适的memory_target大小可以通查看v$memory_target_advice.相关的内存组件都有相关的v$XXXXXX_advice视图(rac下为gv$)

SQL> show parameter memory

NAME                                                 TYPE            VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address                   integer       0
memory_max_target                              big integer 51200M
memory_target                                    big integer 48G
shared_memory_address                        integer       0
SQL> alter system set memory_target = 40G;

系统已更改。

以上即可实现自动内存管理。但现实生产环境中,我们可能需要设置 sga和pga最小值以保证例如sga不小于某个值
SQL> alter system set sga_max_size=32G scope=spfile;

系统已更改。

SQL> alter system set sga_target = 30G;

系统已更改。

如上设置sga不能超过sga_max_size,不仅保证了sga的最小值为30G,同时pga的值为40-30=10G。

内存的变化可以通过以下视图查看
select a.component,a.oper_type,a.target_size,a.final_size from v$memory_resize_ops a order by a.start_time desc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值