您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

【11g体系结构,4】AMM(内存分配自动管理)

2024/4/26 10:28:18发布14次查看
一.amm (automaitc memory managerment) 1.oracle 10g sga的自动管理 : sga_target 指定了sga可以使用的最大内存大小,而sga中各个内存的大小由oracle自行控制,不需要人为指定。oracle 可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大
一.amm (automaitc memory managerment)
1.oracle 10g sga的自动管理 :
sga_target 指定了sga可以使用的最大内存大小,而sga中各个内存的大小由oracle自行控制,不需要人为指定。oracle 可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在sga_target 指定的值之内。一旦给sga_target指定值后(默认为0,即没有启动asmm),就自动启动了asmm特性。如果不设置sga_target,则自动共享内存管理功能被禁止。
注意:修改sga_target的值不能大于sga_max_size,所以sga_max_siz是sga的管理上限。 sql> show parameter sga
name type value ------------------------------------ ----------- ------------------------- lock_sga boolean false pre_page_sga boolean false sga_max_size big integer 416m sga_target big integer 200m
sql> alter system set sga_target=500m scope=spfile ; alter system set sga_target=500m scope=spfile ; * error at line 1: ora-02097: parameter cannot be modified because specified value is invalid ora-00823: specified value of sga_target greater than sga_max_size
②.设置了sga_target后,以下的sga内存区就可以由asmm来自动调整: asmm只能自动调整5个内存池的大小,它们是:shared pool、buffer cache、large pool、java pool和stream pool。我们不再需要设置shared_pool_size、db_cache_size、large_pool_size、 java_pool_size、streams_pool_size这五个初始化参数。而其他的内存池,比如log buffer、keep buffer cache等仍然需要dba手工进行调整。
对于sga_target的限制,它的大小是不能超过sga_max_size的大小的。
#查看sga中各池真实的大小: sql> select name,bytes/1024/1024 m from v$sgainfo;
name m -------------------------------- ---------- fixed sga size 1.27510452 redo buffers 5.78515625 buffer cache size 80 shared pool size 148 large pool size 4 java pool size 4 streams pool size 0 shared io pool size 0 granule size 4 maximum sga size 415.0625 startup overhead in shared pool 52
name m -------------------------------- ---------- free sga memory available 172
12 rows selected.
案例:设置sga_target
sql> alter system set sga_max_size=1000m scope=spfile; sql> alter system set sga_target=1000m scope=spfile;
关闭数据库 shutdown immediate; 启动数据库 startup;
注意: #修改/dev/shm的大小为2g: 要修改etc/fstab 文件,然后重新挂载一下。 [root@gc1 ~]vi etc/fstab #重新挂载
2.oracle 11g sga自动管理:
①.在oracle11g中,oracle 将内存管理的自动化更进了一步,引入了自动内存管理(automatic memory management- amm)的新特性。
②.oracle11g 引入了一个新的参数 memory_target。现在只要设置了这个参数,可以不需要设置 sga_target 和 pga_aggreate_target 两个参数。 只需要设置一个目标内存大小初始化参数( memory_target ) 和一个最大内存大小初始化参数( memory_max_target),数据库就会根据处理需求在sga 与实例 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。但并不会因为设置了memory_target,这两个参数就会自动变回0。
④.oracle的内存管理参数下图所示:
3.shared pool的调整: #查看shared pool 参数 (为0表示shared pool为自动管理) sql> show parameter shared_pool_size
name type value ------------------------------------ ----------- ------------------------- shared_pool_size big integer 0
#查看shared pool的真实大小 sql> select name,bytes/1024/1024 m from v$sgainfo;
name m -------------------------------- ---------- fixed sga size 1.27510452 redo buffers 5.78515625 buffer cache size 80 shared pool size 148 large pool size 4 java pool size 4 streams pool size 0 shared io pool size 0 granule size 4 maximum sga size 415.0625 startup overhead in shared pool 52
#调大shared pool 的值 sql> alter system set shared_pool_size=160m ;
system altered. #查询 sql> select name,bytes/1024/1024 m from v$sgainfo;
name m -------------------------------- ---------- fixed sga size 1.27510452 redo buffers 5.78515625 buffer cache size 68 shared pool size 160 large pool size 4 java pool size 4 streams pool size 0 shared io pool size 0 granule size 4 maximum sga size 415.0625 startup overhead in shared pool 52
name m -------------------------------- ---------- free sga memory available 172
12 rows selected. #调小 shared pool的值, 发现shared pool还是160m,所以shared pool 只能调大不能调小。 sql> alter system set shared_pool_size=148m;
system altered.
sql> select name,bytes/1024/1024 m from v$sgainfo;
name m -------------------------------- ---------- fixed sga size 1.27510452 redo buffers 5.78515625 buffer cache size 68 shared pool size 160 large pool size 4 java pool size 4 streams pool size 0 shared io pool size 0 granule size 4 maximum sga size 415.0625 startup overhead in shared pool 52
name m -------------------------------- ---------- free sga memory available 172
12 rows selected.
二.案例总结:
1.swap区大小设置:
关于操作系统,一般swap区的推荐值为2*ram。如果物理内存(ram)很大,不一定非要把swap设置为2xswap,通常可以设置swap = ram或者小于物理内存(如内存超过32g则完全可以设置swap为16g )。 如果物理内存(ram)过小,在系统繁忙期间,产生大量交换无法换到磁盘,就会出现问题。 另外,如果系统物理内存较小,通常设置sga
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product