我的物理内存有32GB,windows 2008 server,oracle11gR2.
做DBCA的initial parameter分配内存时:
1,典型:oracle总内存只有3072MB,分40%给SGA,PGA。
疑问:为什么oracle总内存只有这么小?
2,定制:按照SGA+PGA最好不要超过总内存的70%,我分别设置SGA:14G,PGA=3G。
但是报ORA-27102: out of memory。
----------以下是我对SGA,PGA的一些收集整理和自己的规划分配,请指教。谢谢。
ORA-27102: out of memory
when running dbca it fails with ORA-27102
solution:
By default, Oracle 10 will allocate 40% of the total system RAM to the SGA and PGA.
On my T2000 with 16GB of RAM this equates to ~6.5GB. Using the value of 4GB for the SHM as stated in the Oracle installation docs is therefore too low. I set the value to 8GB and the database created without problems.
On your 32GB machine, assuming you are using the default 40% allocation, your minimum shared memory requiredment will be ~13GB. Working on the principal of setting it a little higher to get things working (you can always reduce it later), I would set 'project.max-shm-memory' to 16GB and try re-running DBCA.
内存分配原则:
因为我们在数据库服务器会安装二个数据库(不是二个实例):一个生产数据库,一个RMAN备份数据库。
非常有必要对内存进行分配与管理,在用DBCA建库的时候就可以进行选择分配,当然,也可以后续通过命令修改。
总分则:
SGA+PGA最好不要超过总内存的70%,即total_physical_mem*0.7。当然,这个百分比是说这个server只用来做数据库服务器。如果一台服务器有多个应用,则占总内存的百分比可以具体应用设定。
因为我们有二个数据库,我们可以分配如下:
1,生产数据库:(total_physical_mem*0.7)*80%
2,rman备份数据库:(total_physical_mem*0.7)*20%
在OLTP(联机事务处理)系统中,典型PGA内存设置应该是总内存的较小部分(例如20%),剩下80%分配给SGA。 一般来说PGA设置为2G-3G就OK了。
OLTP:PGA_AGGREGATE_TARGET = (oracle_total_mem * 80%) * 20% [oracle_total_mem:分配给oracle的总内存,即total_physical_mem*0.7]
在DSS(数据集)系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。
DSS:PGA_AGGREGATE_TARGET = (oracle_total_mem * 80%) * 50% [oracle_total_mem:分配给oracle的总内存,即total_physical_mem*0.7]
假设总内存有32GB,那么:
1,生产库
SGA:32*0.7 {数据库可分配的总内存} * 0.8 {分配给生产库80%} * 0.8 {OLTP分80%给SGA}=32*0.7*0.8*0.8=14.336G=14680M
PGA: 32*0.7 {数据库可分配的总内存} * 0.8 {分配给生产库80%} * 0.2 {OLTP分20%给SGA}=32*0.7*0.8*0.2=3.584G=3670M
2,rman库
SGA:32*0.7 {数据库可分配的总内存} * 0.2 {分配给rman库20%} * 0.8 {OLTP分80%给PGA}=32*0.7*0.2*0.8=3.584G=3670M
PGA: 32*0.7 {数据库可分配的总内存} * 0.2 {分配给rman库20%} * 0.2 {OLTP分20%给PGA}=32*0.7*0.2*0.2=0.896G=917M
假设总内存有4GB,那么:
1,生产库
SGA:4*0.7 {数据库可分配的总内存} * 0.8 {分配给生产库80%} * 0.8 {OLTP分80%给SGA}=4*0.7*0.8*0.8=1.792G=1835M
PGA: 4*0.7 {数据库可分配的总内存} * 0.8 {分配给生产库80%} * 0.2 {OLTP分20%给SGA}=4*0.7*0.8*0.2=0.448G=458M
2,rman库
SGA:4*0.7 {数据库可分配的总内存} * 0.2 {分配给rman库20%} * 0.8 {OLTP分80%给PGA}=4*0.7*0.2*0.8=0.448G=458M
PGA: 4*0.7 {数据库可分配的总内存} * 0.2 {分配给rman库20%} * 0.2 {OLTP分20%给PGA}=4*0.7*0.2*0.2=0.112G=114M