ORACLE数据库内存设置过大,导致服务器异常缓慢
Apr292016
昨天登录一个数据库服务器,感觉很慢,通过top命令发现当前CPU已经使用50%,交换分区基本用光。
[oracle@SL010A-IVTDB1-NEW ~]$ free -m total used free shared buffers cached Mem: 64383 63870 512 0 9 58696 -/+ buffers/cache: 5164 59219 Swap: 17407 17384 23
经过查询,发现有个进程消耗了20G的内存,是应用程序通过JDBC连接数据库的进程,查询发现,这个会话正在做批量INSERT操作,经向开放人员反映后,在开发人员授意后,杀点这个进程,CPU使用率降为5%左右的正常范围。但是交换分区依然紧张,查询发现这台服务器上的两个实例的SGA和PGA分配的太大所致。
sys@IVLDB> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- -------- lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 38784M sga_target big integer 38784M sys@IVLDB> show parameter paga sys@IVLDB> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- -------- pga_aggregate_target big integer 12896M
经查询,这两个数据库内存 参数使用的是生产数据库的值,经询问得知,同事在恢复这套测试库的时候,使用的是生产的spfile,没有改参数,测试服务器是64G内存,这么设置明显内存不够。最后将SGA和PGA都设置为10G,重启数据库后,目前还没有发现使用交换分区的情况。
【上一篇】ORACLE数据库SQL优化
【下一篇】ORACLE数据库ORA-00392 log 4 of thread 1 is being cleared, operation not allowed错误
【下一篇】ORACLE数据库ORA-00392 log 4 of thread 1 is being cleared, operation not allowed错误