linux 6.1安裝oracle 10g出現 ora-27125和hugepage記載

dotaddjj發表於2012-08-15

今天同事在centos 6.1下安裝oracle 10g,說實話是個很苦逼的活,本來就對於系統那些繁瑣的包自己都覺得很麻煩,所以在前面選擇服務上面都選對的選擇多了點,後面就很少缺少gcc lib compat等型別的包了。不過linux 6下可不買這個帳了,總是安裝過程同事說到是個很痛苦的過程。其實其中的曲折自己不太清楚,但是在dbca建庫開始時出現的ora-27125還是值得斟酌的。

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設定。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1059186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章