Hugepages,hugetlb_shm_group与ORA-27125

Hugepages,hugetlb_shm_group与ORA-27125

转载:http://www.eygle.com/archives/2011/12/hugepageshugetl.html

在某些操作系统上,当启动数据库或者创建数据库时都可能出现ORA-27125错误,我在Oracle Linux 6上安装Oracle 10.2.0.1,创建数据库时就遇到了这个错误。

这个错误的解决就是修改 /proc/sys/vm/hugetlb_shm_group 文件。
以下是老杨提到过的一个问题,解决方法相同:

帮客户解决一个Linux上数据库无法启动的问题。
客户的Linux 5.6 x86-64环境,安装数据库后,启动数据库报错:ORA-27125。
Oracle文档上关于ORA-27125错误的描述为:

ORA-27125: unable to create shared memory segment
Cause: shmget() call failed
Action: contact Oracle support

查询了一下,发现问题和linux上的hugetbl有关。
解决方法也很简单,首先检查oracle用户的组信息:

[[email protected] ~]$ id oracle
uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)
[[email protected] ~]$ more /proc/sys/vm/hugetlb_shm_group
0

下面用root执行下面的命令,将dba组添加到系统内核中:

# echo 501 > /proc/sys/vm/hugetlb_shm_group

然后启动数据库,问题消失。
那么hugetlb_shm_group组是什么呢?以下是解释:
hugetlb_shm_group contains group id that is allowed to create SysV shared memory segment using hugetlb page

这里反复提到了HugePage,以下是关于HugePage的说明和解释:

When a process uses some memory, the CPU is marking the RAM as used by that process. For efficiency, the CPU allocate RAM by chunks of 4K bytes (it‘s the default value on many platforms). Those chunks are named pages. Those pages can be swapped to disk, etc.

Since the process address space are virtual, the CPU and the operating system have to remember which page belong to which process, and where it is stored. Obviously, the more pages you have, the more time it takes to find where the memory is mapped. When a process uses 1GB of memory, that‘s 262144 entries to look up (1GB / 4K). If one Page Table Entry consume 8bytes, that‘s 2MB (262144 * 8) to look-up.

Most current CPU architectures support bigger pages (so the CPU/OS have less entries to look-up), those are named Huge pages (on Linux), Super Pages (on BSD) or Large Pages (on Windows), but it all the same thing.

来源: http://www.eygle.com/archives/2011/12/hugepageshugetl.html

来自为知笔记(Wiz)

时间: 2024-10-12 23:51:39

Hugepages,hugetlb_shm_group与ORA-27125的相关文章

讲解Linux数据库安装

学习了linux这门课之后,就开始实践过程了,这样比较记得牢固,学以致用. 有了基本的命令,就可以试着安装数据库了. 1.企业环境 需要安装VMWare ESXi虚拟机,然后再在里面新建虚拟机. 镜像vmware-viclient-all-5.1.0-1064113-5.1.exe 可以通过客户端VMware vSphere Client 6.0远程连接ESXi虚拟机,然后进行安装操作系统. 2.连接主机后进行创建新的虚拟机 在ESXi虚拟机安装完操作系统后,Linux不能粘贴解决办法 Name

Linux HugePages及MySQL 大页配置

http://blog.csdn.net/dba_waterbin/article/details/9669929 ㈠ HugePages简介             HugePages是kernel 2.6引入以便适应越来越大的物理内存        在Linux下.page size默认是4K.如果使用HugePages.默认是2M             再看2个术语:        page table 映射表:物理内存和swap的对应关系.访问内存是先读page table.根据表里的

Oracle 之 配置HugePages内存

HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能.尤其是对于8GB以上的内存以及较大的Oracle SGA size,建议配值并使用HugePage特性.本文基于x86_64 Linux下来描述如何配值 HugePages. 一. 为oracle服务器配置Hugepages 1.1.查看当前系统是否配值HugePages 下面的查询中HugePages相关的几个值都为0,表明

Configuring HugePages for Oracle on Linux (x86-64)

Introduction Configuring HugePages Force Oracle to use HugePages (USE_LARGE_PAGES) Disabling Transparent HugePages (RHEL6/OL6) Configuring 1G Hugepagesize Introduction For large SGA sizes, HugePages can give substantial benefits in virtual memory man

使用HugePages优化内存性能

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://blog.csdn.net/wenshuangzhu/article/details/44095565 1. 引子 系统进程是通过虚拟地址访问内存,但是CPU必须把它转换程物理内存地址才能真正访问内存.为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中.为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系. 而在Linux中,内存都是以页的形式划

配置MySQL使用HugePages

前言:对于有Oracle运维经验的童鞋来说,如果服务器内存很大,一般都会设置HugePages,是因为如下原因:对于 Linux 操作系统,通过 Linux kswapd 进程和页表内存结构(针对系统中存在的每个进程包含一条记录)实现内存管理. linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用, 内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中, 而将经常使用的信息保留到物理内存.通常情况下,Linux默认情况下每页是4K,这就意味着如

讨厌麻烦的ora 01722无效数字

webservice开发过程中,数据库由原来的oracle改为现在的sql server.然后重新调试,结果报出ora 01722无效数字的错误. 由于连接oracle数据库的时候并没有问题,所以一开始我以为是数据库不同,导致部分数据类型差异,(但又觉得有点离谱,切换数据库,不至于会导致这种错误吧) 经过排查,总结得出如下: 1.对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操作;2.两个类型不匹配的值进行比较操作(例如,"=");3.to_number函数中的值

ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数local_listener来达到目的.除此之外,还可以对实例进行远程注册,以达到负载均衡的目的.这是通过一个参数remote_listener来实现. 有关Oracle 网络配置相关基础以及概念性的问题请参考:      配置ORACLE 客户端连接到数据库   配置非默认端口的动态服务注册   

oerr ora 000845解决方法是扩大/dev/shm空间

打开虚拟机发现实例起不来 [[email protected] ~]# su - oraclesq[[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 2 14:59:54 2016 Copyright (c) 1982, 2013, Oracle.  All rights reserved. Connected to an idle instance. [ema