Oracle 诊断一例 ADDM Reports Significant Virtual Memory Paging

来源:互联网 发布:c语言汉诺塔问题解释 编辑:程序博客网 时间:2024/05/11 00:50

Oracle Database 由11.2.0.1成功升级到11.2.0.2后,运行一段时间通过EM发现有Significant Virtual Memory Paging警告。警告内容显示,大量的虚拟内在交换严重影响系统性能。因为在原来的版本里系统并未出现该警告,而且内存较大,出现这现象较为奇怪,于是开始查找原因。
通过statspack查看节点虚拟内存部分报告:
节点一:

Virtual Memory Paging~~~~~~~~~~~~~~~~~~~~~                     KB paged out per sec:           349.8                     KB paged  in per sec:         2,178.2节点二:Virtual Memory Paging~~~~~~~~~~~~~~~~~~~~~                     KB paged out per sec:           363.2                     KB paged  in per sec:         1,766.4

但当我再通过VMSTAT查看磁盘IO运行情况,

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 4  0 131172 738060 734048 57365004    0    0    85    10    0    0  1  0 98  0  0 1  0 131172 738012 734048 57365012    0    0  4500    36 6138 20499  2  1 97  0  0 4  0 131172 738284 734048 57365032    0    0  5280   364 5965 19930  2  1 97  0  0 4  0 131172 738800 734048 57365032    0    0  6592   577 6805 21277  2  1 97  0  0 2  0 131172 737912 734048 57365032    0    0  5168    15 5969 20360  2  1 97  0  0 3  0 131172 738480 734048 57365032    0    0  5524   108 6161 20143  2  1 98  0  0 ……

长时间观察后很奇怪并未发现该问题。
从网上搜索相关信息有部分提到LINUX下可以将ORACLE数据库相关操作锁定在内存。
1、即通过将lock_sga设为TRUE实现,但是发现该参数只适合于内存手动管理机制,而目前系统是自动管理的,因此无效,而且非单点不建议采用完全手动管理,只好放弃。
2、LINUX环境下大内存页优化配置,即启用HugePage功能。大内存页的好处:
减少页表(Page Table)大小;
Huge Page内存只能锁定在物理内存中,不能被交换到交换区;
由于页表数量减少,使得CPU中TLB的命中率大大提高;
针对Huge Page的页表,在各进程之间可以共享,也降低了PageTable的大小。
具体配置资料可在网上搜索下,资料很多,配置案例也很全面。
但是异外的是,配置完成后,问题依然。
最后在官方文档中找到[ID 1322964.1],Bug#10220118,升级后存在的Bug。
小补丁,且支持滚动升级。打上之后,解决。

小记:Oracle产品本身存在大量Bug,所以在寻找问题解决办法,尤其是遇到异常情况时,官方技术支持文档显得尤为重要。

0 0