在Oracle Linux 6.1 上安装Oracle 10.2.0.1, 在安装软件的时候就是很曲折的过程,在dbca 建instance的时候,又遇到了:
ORA-27125:unable to create shared memory segment
安装被中断。
rac2:/u02> oerr ora 27125
27125, 00000, "unable to create sharedmemory segment"
// *Cause: shmget() call failed
// *Action: contact Oracle support
解决方法如下:
[root@rac2 ~]# id oracle
uid=500(oracle) gid=501(oinstall)groups=501(oinstall),502(dba),503(asmadmin),504(oper)
[root@rac2 ~]# more/proc/sys/vm/hugetlb_shm_group
0
[root@rac2 ~]# echo 502 >/proc/sys/vm/hugetlb_shm_group
--这里的502 是上面的id 命令查看出来的。
[root@rac2 ~]# more /proc/sys/vm/hugetlb_shm_group
502
然后重新DBCA,成功建立实例。 如果遇到实例名以存在的提示,删除/etc/oratab 中对应的记录即可。
hugetlb_shm_group 说明:
hugetlb_shm_group contains group id that isallowed to create SysV shared memory segment using hugetlb page
When a process uses some memory, the CPU ismarking the RAM as used by that process. For efficiency, the CPU allocate RAMby chunks of 4K bytes (it's the default value on many platforms). Those chunksare named pages. Those pages can be swapped to disk, etc.
Since the process address space are virtual, the CPU and the operating systemhave 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 thememory is mapped. When a process uses 1GB of memory, that's 262144 entries to lookup (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 lessentries to look-up), those are named Huge pages (on Linux), Super Pages (onBSD) or Large Pages (on Windows), but it all the same thing.