Oracle对内存的管理的 优化从未间断,从8i到11g不断地提出新的管理概念。每个本版都对内存管理进行了简化:
8i->9i:PGA的自动管理;
9i->10g:SGA的自动管理;
10g->11g:MEMORY(SGA+PGA)的自动管理。
在11g中oracle引入了自动化内存管理(Automatic Memory Management)概念,仅用两个参数就能完成oracle的内存管理工作。
自动内存管理:
从9i开始,sga_max_size参数设置SGA 的内存大小,不能动态修改
从10g开始,指定了sga_target参数后,所有的SGA组件如:shared pool、 data buffer、 large pool都不用手工指定了,Oracle会自动管理。这一特性就是自动共享内存管理ASMM。如果设置了sga_target=0,就自动关闭自动共享内 存管理功能。Sga_target大小不能超过sga_max_size的大小。
手动管理SGA:
Alter system set sga_target=2000m;
Alter system set db_cache_size=1000m;
Alter system set shared_pool=200m;
Alter system set sga_target=0---------关闭自动共享内存管理ASMM
11G以后sga+pga整个内存可以自动管理AMM,相关 参数memory_max_target memory_target.设置好这两个参数后就不用关心SGA和PGA了
11g手动内存管理:
Alter system set memory_target=3000m;
Alter system set sga_target=2000m;
Alter system set pga_aggregate_target=1000m;
Alter system set memory_target=0;---------关闭自动内存管理AMM
SGA+PGA最好不要超过总内存的70%
查看SGA区剩余可用内存的方法
SQL> col OBJECT_NAME format a20
SQL> col 自由空间百分比(%) format 90.99 --格式化,把小数点对齐为两位
SQL> select name,
sgasize/1024/1024 "Allocated(M)",
bytes/1024 "自由空间(K)",
round(bytes/sgasize*100, 2) "自由空间百分比(%)"
from (select sum(bytes) sgasize from sys.v_$sgastat) s, sys.v_$sgastat f
where f.name = 'free memory';
NAME Allocated(M) 自由空间(K) 自由空间百分比(%)
-------------------------- ------------ ----------- -----------------
free memory 54.4491119 11619.457 20.84
free memory 54.4491119 600 1.08
free memory 54.4491119 17788 31.90
在考虑设置oracle会话数的时候,有一个基本原则,oracle支持CPU个数的5-10倍的活动会话(Active)
这样情况下oracle的处理能力比较理想
需要根据观察oracle的活动会话情况调整应用服务的JDBC连接设置
如weblogic中JDBC的连接数设置并不是大越好,最好不要初始值等于最大值,初始值太大会造成oracle的活动会话多,会影响oracle的性能,合适的JDBC初始连接数是较好的
shared_pool_size=135000000
db_cache_size=400000000
large_pool_size=70000000
java_pool_size=16000000
sort_area_size=1048576
SGA_MAX_SIZE=750000000
SGA_TARGET=750000000
pga_aggregate_target=360000000
hash_area_size=1100000
processes=400
open_cursors=3000
主要是SGA、PGA、共享池(shared_pool_size)、缓冲池(db_cache_size)、大型池(large_pool_size)、JAVA池(java_pool_size)
还有processes、open_cursors
SGA=30%-40%物理内存
PGA=50%SGA
共享池=20%SGA
缓冲池=50%SGA
大型池=10%SGA
JAVA池=2%SGA
缓冲池>共享池
设置为归档模式
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
调整参数
SQL> alter system set processes=800 scope=spfile;
系统已更改。
SQL> alter system set open_cursors=5000 scope=spfile;
系统已更改。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22036495/viewspace-1058784/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22036495/viewspace-1058784/