oracle查看sga实际使用,如何查看SGA区情况

1、ASMM(Automatic Shared Memory Management,10g)

(1)、原理:

只需指定SGA_TARGET参数(SAG的总大小),数据库将会根据负载和历史信息来自动分配SAG的每个组件。

启用ASSM需将STATISTICS_LEVEL参数设为TYPICAL或ALL,并且SGA_TARGET参数为非0。

(2)、ASSM自动分配以下SGA组件:

SHARED_POOL_SIZE

DB_CACHE_SIZE

LARGE_POOL_SIZE

JAVA_POOL_SIZE

STREAMS_POOL_SIZE

(3)、以下的组件还需要手动来管理:

LOG_BUFFER

RESULT_CACHE_SIZE

DB_KEEP_CACHE_SIZE

DB_RECYCLE_CACHE_SIZE

DB_nK_CACHE_SIZE

(4)、手动管理的组件也包括在SAG_TARGET中,比如SGA_TARGET是400M,LOG_BUFFER为1M,DB_KEEP_CACHE_SIZE为50M,那么可供ASSM来自动管理的大小只有349M;

SAG_TARGET参数可以通过ALTER SYSTEM来动态的改变大小,但不能超过SGA_MAX_SIZE参数大小,SGA_MAX_SIZE不是动态可以改变的;

如果DBA调整SGA_TARGET的值,那么会引起被ASMM管理的缓冲区的变化,而不会引起手工管理的缓冲区的变化;

在使用ASMM的情况下,ASMM自动管理的缓冲池可以设置为0,也就是说不设置任何限制,由ASSM完全管理;

如果某个ASMM自动管理的缓冲池设置了非零的值,那么ASMM会保证在任何情况下,这个缓冲池的大小不会小于这个参数设置值;

在数据库运行的过程中,DBA可以动态调整ASMM管理的缓冲池的大小,如果设置的新值大于目前缓冲池的大小,并且是合理的,那么该设置会立即生效;

如果设置的新值小于目前缓冲池的大小,ASMM会记录下这个设置建议,但是不会立即缩小缓冲池,而是会等待今后别的缓冲池需要扩展的时候才会释放;

对于一个使用ASMM的系统,可以随时改变为关闭ASMM,只要将SGA_TARGET设置为0,如果这个操作发生了,那么所有的ASMM管理的参数都会保留为当前的设置;

10G ASMM只能管理DB CACHE中的DEFAULT池,而不能管理所有的DB CACHE。KEEP池、RECYCLE池和NK缓冲池都需要手工管理;

可以通过V$SGA_DYNAMIC_COMPONENTS视图来查看当前SGA组件的大小;

如SGA_TARGET设为0来关闭ASSM,当前各组件的SIZE将会写入SPFILE用来下次的启动。

(5)、开启ASMM

i、Get a value for SGA_TARGET;

SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;

ii、Use that value to set SGA_TARGET;

iii、Set the values of the automatically sized SGA components to 0.

(6)、ASMM的另外一个优势是能够把有限的内存资源合理分配,不会因为DBA设置错误而导致部分缓冲区性能下降。一个新的后台进程mman会对系统的缓冲区状态进行分析,根据目前系统的负载情况,根据一定的策略对缓冲区进行调整。其处理过程如下:

首先,周期性采集系统的状态;

生成或分析建议直方图 ;

根据直方图找到合理的缓冲区调整方案;

根据调整方案自动调整各个缓冲区的大小。

(7)、关闭ASMM

i、Setting SGA_TARGET to 0 disables autotuning.

ii、Autotuned parameters are set to their current sizes.

iii、The SGA size as a whole is unaffected.

2、MSMM(9i)

PGA_AGGREGATE_TARGET来实现PGA的自动管理。此参数用来指定所有session总计可以使用最大PGA内存。

SQL> show parameter WORKAREA_SIZE_POLICY;

此参数用于开关PGA内存自动管理功能,该参数有两个选项:AUTO 和 MANUAL,当设置为AUTO时,数据库使用Oracle9i提供的自动PGA管理功能,当设置为MANUAL时,则仍然使用Oracle9i前手工管理的方式。

3、AMM(Automatic Memory Management,11g)

在ASMM的基础上加强对PGA的自动化管理;

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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值