数据库主机内存调优

某省的数据库监控经常告警,(1)报数据库buffer命中率为70%,(2)报内存使用率高达95%,剩余内存不足。
经检查,该数据库主机的内存为8G,其中划分了4.5G给了sga+pga。那为什么8G的内存剩余不到1G了呢,除了分配给oracle的,还有谁用掉了近4G的内存?另外,要加大buffer的命中率,就要继续增加db_cache_size,就要继续消耗内存,怎么办?

经过检查发现:
hl_db03#[/]cd /usr/contrib/Q4/bin
hl_db03#[/usr/contrib/Q4/bin]./kmeminfo
kmeminfo (3.11)
libp4 (5.17): Opening /stand/vmunix /dev/kmem

Loading symbols from /stand/vmunix

======================================================================
Date: Wed Jul 11 18:02:02 2007

Processing pfdat table (2043764 entries)…

———————————————————————-
Physical memory usage summary (in pages):

Physmem = 2096640 Available physical memory:
Freemem = 28115 Free physical memory
Used = 2068525 Used physical memory:
System = 712589 by kernel:
Static = 52876 for text and static data
Dynamic = 0 for dynamic data
Bufcache = 659667 for file-system buffer cache<--------和dbc_max_pct/dbc_min_pct有关 Eqmem = 46 for equiv. mapped page pool SCmem = 0 for system critical page pool User = 1070721 by user processes Uarea = 3884 for thread uareas Disowned = 52203 disowned pages ---------------------------------------------------------------------- Dynamic memory usage summary (in pages): ……(以下省略) 我们可以看到 Bufcache = 659667 ,659667×4k=2638668k=2G。 通过kmtune |grep dbc_ dbc_max_pct 50 - 50 dbc_min_pct 10 - 10 发现以上两个值设置的过大,通过sam将其调整为 dbc_max_pct 5 - 5 dbc_min_pct 2 - 2 并且在数据库中加大db_cache_size到3G。 调整后,buffer的命中率为99%,内存使用率为70%。

相关文章

一条评论

  1. 呵呵!文件系统的缓冲区太大了,默认情况下应该没有这么大的,感觉是有人修改过了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据