支招:Oracle数据库的添加内存方法

1.修改挂载参数,linux运行就了重启会强制检测磁盘,将最后2个数据全设置为0

[root@ora29 ~]#cat /etc/fstab

2.修改SGA使用大小

[root@ora29 ~]# cat /etc/sysctl.conf

kernel.shmall=x 可用共享内存的总量,单位页;x*页大小/1024/1024= G

kernel.shmmax=y 单个共享内存段的最大数;y/1024/1024/1024= G

kernel.shmmni=z 单个共享内存段的最小值;z单位是bytes,一般都是4K

[root@ora29]#tune2fs -l /dev/sda1| grep "Block size"查看块大小,到内存中即页大小

cat >> /etc/sysctl.conf 《 EOF

kernel.shmall = 7340032

kernel.shmmax = 34359738368

EOF

3.修改PGA参数

alter system set sga_max_size=22526m scope=spfile;

alter system set sga_target=22528m scope=spfile;

alter system set pga_aggregate_target = 6144m scope=spfile;

4.如若数据文件以后有大量增加需要修改db_files,修改完成需要重启。

SYS>show parameter db_files

SYS>alter system set db_files=9300 scope=spfile ;

5.修改完成后查看修改结果

[oracle@ora29 ~]$ ipcs -l

扩展:

并不是所有的SGA内存区都能被SGA_TARGET控制,在10g中,只有5个部分的的内存会再实例运行中,由oracle自动调整其使用的内存空间:

DB_CACHE_SIZE

SHARE_POOL_SIZE

JAVA_POOL_SIZE

LARGE_POOL_SIZE

STREAMS_POOL_SIZE

另外

SGA_TARGET:设置为0,则为手动设置;大于0,则SGA内存将会自动分配。

STATISTICS_LEVEL:设置为TYPICAL或ALL,以便收集到足够的统计信息,否则oracle没有先关统计信息作为参照,就无法确定如何分配SGA各部分的内存。