日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle数据库开启Huge Page

發布時間:2023/12/20 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle数据库开启Huge Page 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.ORACLE開啟Huge page時的注意事項

1.Hugepages是在分配后就會預留出來的,其大小一定要比服務器上所有實例的SGA總和要大,差一點都不行。
比如說Hugepages設置為90G,oracle SGA為91G,那么oracle在啟動的時候就不會使用到這90G的Hugepages。
這90G就浪費了。所以在設置Hugepages時要計算SGA的大小,后面會給出一個腳本來計算。

2.其他進程無法使用Hugepages的內存,所以不要設置太大,稍稍比SGA大一點保證SGA可以使用到hugepages就好了。

3. PGA不會使用Hugepages的內存。所以11g的AMM (Automatic Memory Management,memory_target參數)是不被支持的。
而ASMM(Automatic Shared Memory Management, SGA_target參數)是被支持的,這兩個不要搞混淆了。


二.設置HugePages步驟

1.設置memlock
在/etc/security/limits.conf文件中添加memlock的限制,注意該值略微小于實際物理內存的大小。比如物理內存是64GB,可以設置為如下:

* ?soft ? memlock ? ? 60397977
* ?hard ? memlock ? ?60397977

如果這里的值超過了SGA的需求,也沒有不利的影響。但是,其實按我的實驗,這個值其實大于SGA,小于物理內存就可以,盡量應該靠近SGA。
如果使用了Oracle Linux的oracle--validated包,或者Exadata DB compute會自動配置這個參數。

?
2.驗證memlock使用如下命令查看參數值: ?這里,最好是重啟一下服務器再驗證,比較穩妥
$ ulimit -l

60397977

?
3.禁用AMM ? ?----注意
如果Oracle是11g以后的版本,那么默認創建的實例會使用Automatic Memory Management (AMM)的特性,
該特性與HugePage不兼容。在設置HugePage之前需要先禁用AMM。設置初始化參數MEMORY_TARGET和MEMORY_MAX_TARGET為0即可。
使用AMM的情況下,所有的SGA內存都是在/dev/shm下分配的,因此在分配SGA時不會使用HugePage。這也是AMM與HugePage不兼容的原因。

另外:默認情況下ASM instance也是使用AMM的,但因為ASM實例不需要大SGA,所以對ASM實例使用HugePages意義不大。

所以,如果我們要使用HugePage,那么就必須先確保沒有設置MEMORY_TARGET/ MEMORY_MAX_TARGET參數。

?
4.計算vm.nr_hugepages的建議值
確保所有的數據庫實例都已經啟動,包括ASM實例。使用hugepages_settings.sh腳本獲取thevm.nr_hugepages內核參數的建議值。

./hugepages_settings.sh ? ? ? ? ?------腳本見下面附件

...(略)

Recommended setting: vm.nr_hugepages = 1536


5.在/etc/sysctl.conf文件中設置vm.nr_hugepages參數
vm.nr_hugepages = 1536

設置好之后,用sysctl -p 命令使其生效

?
6.停止所有實例,并重啟服務器
在重啟系統之后,確保所有的數據庫實例都已經啟動,使用如下命令檢查HugePage的狀態

[root@test1 ~]# cat /proc/meminfo |grep -i HugePages

HugePages_Total: ? ?1536
HugePages_Free: ? ? 1500
HugePages_Rsvd: ? ? 1025

-----------------------------------------------------------------------------------------------------------------------------------------------------

附:ORACLE官網提供的計算vm.nr_hugepages建議值的腳本
注1:該腳本需要在已經安裝了oracle的服務器上執行,且保證oracle處于正常運行狀態,才會有結果
注2:腳本中需要用到bc命令,如沒有則安裝yum install bc -y
注3:在CENTOS 7 上測試時報錯:Unrecognized kernel version 3.10. Exiting. 可以將腳本中倒數第5行的2.6修改為3.10來解決

#!/bin/bash # # hugepages_settings.sh # # Linux bash script to compute values for the # recommended HugePages/HugeTLB configuration # # Note: This script does calculation for all shared memory # segments available when the script is run, no matter it # is an Oracle RDBMS shared memory segment or not. # # This script is provided by Doc ID 401749.1 from My Oracle Support # http://support.oracle.com# Welcome text echo " This script is provided by Doc ID 401749.1 from My Oracle Support (http://support.oracle.com) where it is intended to compute values for the recommended HugePages/HugeTLB configuration for the current shared memory segments. Before proceeding with the execution please make sure that:* Oracle Database instance(s) are up and running* Oracle Database 11g Automatic Memory Management (AMM) is not setup(See Doc ID 749851.1)* The shared memory segments can be listed by command:# ipcs -mPress Enter to proceed..."read# Check for the kernel version KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage size HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`# Initialize the counter NUM_PG=0# Cumulative number of pages required to handle the running shared memory segments for SEG_BYTES in `ipcs -m | awk '{print $5}' | grep "[0-9][0-9]*"` doMIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`if [ $MIN_PG -gt 0 ]; thenNUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`fi doneRES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`# An SGA less than 100MB does not make sense # Bail out if that is the case if [ $RES_BYTES -lt 100000000 ]; thenecho "***********"echo "** ERROR **"echo "***********"echo "Sorry! There are not enough total of shared memory segments allocated for HugePages configuration. HugePages can only be used for shared memory segments that you can list by command:# ipcs -mof a size that can match an Oracle Database SGA. Please make sure that:* Oracle Database instance is up and running* Oracle Database 11g Automatic Memory Management (AMM) is not configured"exit 1 fi# Finish with results case $KERN in'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;'2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;*) echo "Unrecognized kernel version $KERN. Exiting." ;; esac# End

歡迎關注我的博客《Jackin's Blog - 知識改變命運》學習分享更多知識

總結

以上是生活随笔為你收集整理的Oracle数据库开启Huge Page的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。