在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题

Posted msdnchina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题相关的知识,希望对你有一定的参考价值。

在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题

来源于:
ORA-600 [KGHLKREM1] On Linux Using Parameter drop_cache On hugepages Configuration (文档 ID 1070812.1)

适用于:
Oracle Database - Enterprise Edition - Version 10.2.0.1 and later
Generic Linux
***Checked for relevance on 29-Jul-2013***

症状:
你正在运行一个Oracle database,单实例数据库或者rac。你使用基于大页内存的sga
你遇到下面的问题:

ORA-00600: internal error code, arguments: [KGHLKREM1], [0x06BC00020]
with stack trace similar to: kghnerror kghadd_reserved_ext kghgex

-- or also

ORA-07445: exception encountered: core dump
[kglhdal()+1105][SIGSEGV] [Address not mapped to object] [0x000000008] [] []

ORA-07445: exception encountered: core dump [kghfnd()+2328] [SIGSEGV]
[Address not mapped to object] [0xFFFFFFFFFFFFFFF0] [] []

对侵犯地址(在上面的例子中是0x6bc00020)进行SGA heap dump显示,被清零(zeroed out)

asm1_lmd0_8600.trc
~~~~~~~~~~~~~~~~~~
*** 2010-02-08 15:57:38.274
***** Internal heap ERROR KGHLKREM1 addr=0x6c400020 ds=0x60000058 *****
***** Dump of memory around addr 0x6c400020:
06C3FF020 00000000 00000000 00000000 00000000 [................]
Repeat 511 times

 

变化:
1.
在你的系统中,你正在运行vm.drop_caches=1 (or 3),drop_cache被设置为一个非零值,或者你在执行:

echo 3 > /proc/sys/vm/drop_caches

如下关于drop_caches的解释,不做翻译,原文如下:

/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

To free pagecache:

* echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

* echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

* echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, 
the user should run "sync" first in order to make sure all cached objects are freed.

2.
已经使用Linux的大页内存。


原因:
这是Linux 内核的问题
使用Linux内核drop_cache参数和大页内存时,内存损坏会发生。

Per internal Bug 9461825, executing vm.drop_caches corrupts Oracle Database SGA hugepages.
This is fixed in Linux Kernel version 2.6.18-194.0.0.0.4.EL5

解决方案:

1.  As a workaround when hugepages are set avoid any vm.drop_cache settings.
- OR -
2.  Upgrade to Linux Kernel version 2.6.18-194.0.0.0.4.EL5

参考:
BUG:9358381 - ASM INSTANCE IS CRASHING AS ORA-600[KGHLKREM1] WHEN HUGEPAGES ARE IN USE

以上是关于在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题的主要内容,如果未能解决你的问题,请参考以下文章

PG数据库配置大页

LINUX下为ORACLE数据库设置大页--hugepage

LINUX下为ORACLE数据库设置大页--hugepage

Oracle关于内存参数及大页设置的相关概念和设置之Limits概念和配置

linux内存--大内存页(大页)

linux内存--大内存页(大页)