DBCA建库偶遇ORA-27125

来源:互联网 发布:ubuntu查看gpu使用率 编辑:程序博客网 时间:2024/05/22 08:17

OS:Rhel -5.8- 64bit

Oracle version: oracle 10g-64bit

#uname -a

Linux test 2.6.32-300.10.1.el5uek #1 SMPWed Feb 22 17:37:40 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

 

在使用dbca建库时包错

 

解决方法:注意用户为root

root@test ~]# id oracle10g

uid=610(oracle10g) gid=54321(oinstall)groups=54321(oinstall),54322(dba)

[root@test ~]# more/proc/sys/vm/hugetlb_shm_group

0

 [root@test~]# echo 54322 > /proc/sys/vm/hugetlb_shm_group

[root@test ~]# more/proc/sys/vm/hugetlb_shm_group

54322

 

 

以下内容摘自:http://dotaddjj.itpub.net/post/43172/528658

 

ORA-27125: unable to create shared memory segment

无法分配创建共享内存段,这点开始以为是/etc/sysctl.conf中的设置问题,不过查看其实问题不在这儿。

正确的办法是修改/proc/sys/vm/hugetlb_shm_group中的记录

[root@server119 security]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)context=user_u:system_r:unconfined_t:s0

[root@server119 security]# more /proc/sys/vm/hugetlb_shm_group

0

[root@server119 security]# echo 501 > /proc/sys/vm/hugetlb_shm_group

[root@server119 security]# more /proc/sys/vm/hugetlb_shm_group

501

而后正常运行可以运行dbca建库。

摘要下Hugepage/Big page

系统进程是通过虚拟访问内存page table,那么cpu就需要将虚拟地址转换为物理内存地址ram+swap才能真正访问,cpu会缓存最近的虚拟内存地址和物理内存地址的映射关系(有点像lru list的管理),保存在由一个cpu维护的映射表中(linuxcpu申请固定大小buffer称为TLB用来管理page table),当然如果物理内存很大,越来越多的虚拟内存地址和物理地址被映射,当然对cpu检索还是会有一定的影响。

linux环境下,内存都是以页 4kb的单位来定义的,如果要减少映射关系,需要使用大的内存页,相对来说hugepage也就是所谓的巨页内存,hugepage会一直keep在内存中,不会被交换出去,减少频繁的page inpage out,不能被其进程存占用,当使用大量物理内存的服务器时(8g下就建议使用hugepage),还是建议使用hugepage,对于oracle服务器来说,直接设置器hugepage pool等于sga即可。

可以通过如下方式查看Hugepage页的相关信息

[root@server119 security]# cat /proc/meminfo |grep Huge

HugePages_Total: 0 –Hugepage的页面数量

HugePages_Free: 0 --剩余的页面数量

HugePages_Rsvd: 0 --被分配预留但是没有使用的page数量

Hugepagesize: 2048 kB --Hugehuge的单个页面的大小

默认是没有开启Hugepage的。

Oracle 10g可以通过设置sysctl.confvm.nr_hugepages参数来启用hugepagevm.nr_hugepages相当于普通页内存的参数kernel.shmall的功能。设置vm.nr_hugepages参数后重启系统。

[root@server119 security]# cat /proc/meminfo |grep Huge

HugePages_Total: 300 –Hugepage的页面数量

HugePages_Free: 20 --剩余的页面数量

HugePages_Rsvd: 0 --被分配预留但是没有使用的page数量

Hugepagesize: 2048 kB --Hugehuge的单个页面的大小

Oracle 11g由于启用amm管理,ammhugepgae不兼容,需要先关闭amm特性,而后参照oracle 10gpugepage设置。

 

问题补充

摘自:http://yangtingkun.itpub.net/post/468/517086

Linux上数据库启动出现ORA-27125错误

===========================================================

作者:yangtingkun(http://yangtingkun.itpub.net)
发表于: 2011.04.27 23:59
分类: ORACLE , Bug
出处: http://yangtingkun.itpub.net/post/468/517086
---------------------------------------------------------------

帮客户解决一个Linux上数据库无法启动的问题。

 

客户的Linux 5.6 x86-64环境,安装数据库后,启动数据库报错:ORA-27125。Oracle文档上关于ORA-27125错误的描述为:

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

查询了一下,发现问题和linux上的hugetbl有关。

解决方法也很简单,首先检查oracle用户的组信息:

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

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

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

然后启动数据库,问题消失。

 

 

MOS问题搜索

 

ORA-27125 while creating the DB instance on  Kernel 2.6 [ID 293988.1]

转到底部


修改时间:2012-11-19类型:PROBLEM状态:PUBLISHED优先级:3

注释 (0)

In this Document

Symptoms

 

Cause

 

Solution

 

References


Applies to:

Oracle Server - Enterprise Edition - Version 9.2.0.1 to10.2.0.1 [Release 9.2 to 10.2]
Linux x86
SUSE \ UnitedLinux x86-64
Linux x86-64
Linux Itanium
***Checked for relevance on 19-Nov-2012***
***Checked for relevance on 07-Jun-2010***

This Problem can be seen on the SUSE SLES9 linux distribution which runs onkernel '2.6.5-7.191'

Symptoms

While starting the database instancefollowing error is encountered.

SQL> startup
ORA-27125: unable to create shared memory segment
Linux Error: 1: Operation not permitted

Cause

This is caused by '2.6.5-7.nnn' kernelsrequiring MLOCK privilege for hugetlb memory.

 

Solution



To enable use of "hugetlb memory", or to allow the init.ora parameter"lock_sga=true" to be used, do:

--- Login as root
--- # echo 1 > /proc/sys/vm/disable_cap_mlock

If you need to make this change persistent

--- Login as root
--- Edit /etc/sysctl.conf
Add following lines
# Oracle requires MLOCK priviledge for hugetlb memory.
vm.disable_cap_mlock=1
--- Execute the command
#/etc/init.d/boot.sysctl start
Setting current sysctl status from /etc/sysctl.conf
vm.disable_cap_mlock = 1
--- Dont forget to enable the service.
chkconfig boot.sysctl on

References



BUG:4726024- GETTING ORA-27125 WHEN TRYING TO STARTUP INSTANCE
NOTE:317139.1- How to Configure SuSE SLES 9 / 10 32-bit for Very Large Memory with ramfs andHugePages

 

 

原创粉丝点击